fc2ブログ

【ClosedXML】 Excelブックの作成、読み込み

 ClosedXMLでExcelファイルを扱う為には、まず最初にXLWorkbookインスタンスを作成する必要があります。
 Excelファイルを新たに作成したい場合は以下の様にします。
using(var book = new XLWorkbook())
{
    // エクセルファイルに書き込み

    book.SaveAs(path);
}
 コンストラクタでExcelファイルのPathを指定しない場合は空のブックが作成されます。
 あとはそのブックにシートを追加し、セルに値を入力する等していきます。
 最後にSaveAsメソッドでExcelファイルを保存します。

 既存のExcelブックを読み込みたい場合は以下の様にします。
using(var book = new XLWorkbook(path))
{
    // エクセルファイルの読み込み、編集

    book.Save();
}
 XLWorkbookのコンストラクタで読み込みたいExcelファイルのPathを指定します。
 このときExcelファイルを開いている場合はファイルがロックされていて読み込めないため例外が発生しますので、注意してください。
 後は、ワークシートやセルから情報を読み取るだけです。
 もちろん、読み込んだExcelブックを編集することもできます。
 編集した場合は最後にSaveメソッドを実行し、編集内容を保存してください。
 新たにExcelファイルを作成する場合も、Excelファイルを読み込む場合でも、XLWorkbookインスタンスは最後にDisposeする必要があります。

 以下は単純なExcelブック操作のサンプルコードです。
using ClosedXML.Excel;
using System;
using System.IO;

namespace ClosedXml02
{
    class Program
    {
        static void Main(string[] args)
        {
            var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "ブック.xlsx");

            // Excelファイル作成
            using (var book = new XLWorkbook(XLEventTracking.Disabled))
            {
                var sheet = book.AddWorksheet("しーと");
                sheet.Cell("A1").Value = "値";

                book.SaveAs(path);
            }
                    
            // Excelファイルを読み込み
            using(var book = new XLWorkbook(path, XLEventTracking.Disabled))
            {
                var sheet = book.Worksheet("しーと");
                sheet.Cell("A1").Value = "Value";

                book.Save();
            }
        }
    }
}
 このサンプルではExcelファイルを作成した後に、そのファイルを開きA1セルの値を変更しています。
 (シートやセルの操作については次回以降に説明するので省略します)
 このサンプルでは、XLWorkbookのコンストラクタでXLEventTracking.Disabledを指定しています。こうすることで、行や列等の追加・削除に伴う追跡を行わないようにできます。
 ClosedXMLではシートや列、行等の追加や削除を追跡しています。そのため、巨大なExcelファイルを扱う場合には追跡イベントが大量に発生するためパフォーマンスが悪化します。
 また、巨大なExceファイルを使用する場合は列や行等を扱う場合に逐一Disposeすることが推奨されています。
 Excelファイルを新たに作成したり、ファイルから情報を読み取ったりするだけならこういった追跡は必要ありません。(ほとんどの場合で必要ないと思われます。)
 そんな場合は追跡機能をOFFにすることでパフォーマンスを改善できます。また、ループの際に一々Disposeする必要もなくなります。(XLWorkbookのDisposeは必要です)
 
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

カレンダー
08 | 2023/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
全記事表示リンク

全ての記事を表示する

カテゴリ
タグリスト

月別アーカイブ
04  10  11  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09 
最新記事
リンク
最新コメント
検索フォーム
Amazon