今回から「OpenXML」の予定でしたが、その前に「ClosedXML」をざっくりまとめてみます。
【ClosedXMLで出来ること】
1.Excelドキュメントをプログラム処理できる 2.プログラムコードはVBAが出来れば事足りる
もう既に現存しているライブラリなので、あたりまえと言えばあたりまえなのですが…。
でもなぜこのライブラリが「オープンソース」として提供されているのか、それまでの経緯等興味がありましたら、こちらを見てください。
こういうライブラリがあれば…、とか考えていることは世界共通なんだなと思いました。
コーディングについては、ClosedXMLライブラリをプロジェクト参照すればVBAライクに出来ますので、非常に取り組みやすいと思います。例えば、セル”A1″に値”hoge”を設定したい場合、
・cell("A1").value = "hoge"
普通のセル参照方法です。ですが、R1C1参照も可能ですので、
・cell(1,1).value = "hoge" ※1 ※1.セル"A1" = 行列(R1C1)参照では(1,1) に相当。
みたいなことも可能です。プログラムでセルに繰り返し処理をしたい場合、R1C1参照でセルにアクセスすれば簡単にfor文などで出来ますね。
3.プログラム処理対象バージョンはOffice2007以降 4.プログラム処理の出力対象が「*.xlsx」であればだいたいの処理は可能
ただし、扱えるバージョンとしてはOffice2007以降で、有効な拡張子は
・*.xlsx、*.xlsm
のみです。ですので、saveasで別形式(html等)に保存はClosedXMLライブラリではできません。また、ワード(*.docx)やパワーポイント(*.pptx)に対応したライブラリは現状ありません。
ClosedXML自体はライブラリ参照で処理はブラックボックスになっていますので、良い意味でExcelファイルの操作などはClosedXMLに任せていればよく意識する必要はありません。Excelファイル自体を深い階層までプログラム処理しないのであれば、非常に使い勝手はいいです。
ですが、深い階層までプログラム処理する場合は、OpenXMLに一日の長がありあります。要素単位(※2)で処理が可能ですので…。
※2.Officeファイルで要素単位まで見る場合、ファイルの拡張子のあとに「.zip」と追記するだけで各要素が見れます。
例)hoge.xlsx の場合
リネーム前:hoge.xlsx
リネーム後:hoge.xlsx.zip
ファイルエクスプローラーでZIPフォルダ配下が見れます。