Excel for .NET は Microsoft Excel 2007 OpenXml ファイルの読み取り/書き込みが行えるようになりました。OpenXml は Microsoft が Office 2007 に導入したオープンな標準形式です。OpenXml は XML をベースにし、BIFF8 などのプロプライエタリなバイナリ形式とは対照的にドキュメントが公開されているため、OpenXml ファイルはアプリケーションによって操作しやすくなっています。OpenXml ファイルは Zip 圧縮を使って圧縮された多数の XML ファイルを格納します。これらは圧縮されているため、OpenXml ファイルは通常、.doc や .xls ファイルなどの従来のドキュメントファイルよりもサイズが大幅に小さくなります。
Excel for .NET は OpenXml ファイル内のデータと書式情報のロードと保存は行いますが、数式のロードと保存は行いません。数式は、現時点で OpenXML 形式によってサポートされていない BIFF 形式で opaque としてコピーされます。数式を含むファイルをロードしてそれらを保存する場合、数式は削除されます。これは、数式を保持する従来の .xls(BIFF8)形式と異なっています。
OpenXml 形式をサポートするために、 C1XLBook の Load および Save メソッドはファイルのロード/保存時に使用するファイル形式の指定に使用される FileFormat パラメータを取るオーバーロードを受け取ります。
ファイル名を指定しない場合は、Excel for .NET はファイル形式をファイル名の拡張子から推測します。つまり、「XLSX」と「ZIP」拡張子のファイルはデフォルトで OpenXml ファイルとしてロードおよび保存されます。他のファイルは BIFF8(.xls)形式としてロードおよび保存されます。
たとえば、次のようになります。
C# コードの書き方
C# |
コードのコピー
|
---|---|
// ファイル拡張子に依存してロードおよび保存 c1Excel1.Load("somefile.xls"); // biff8ファイルを読み込む c1Excel1.Save("somefile.xlsx"); //OpenXmlとして保存 c1Excel1.Save("somefile.zip"); //OpenXmlとして保存 // FileFormat を指定してロードおよび保存 c1Excel1.Load("somefile.xls", FileFormat.Biff8); c1Excel1.Save("somefile.xlsx", FileFormat.OpenXml); |
ストリームでのファイルのロード/保存時に形式を指定することもできます。FileFormat を指定しない場合は、Excel for .NET は BIFF8 形式をデフォルトとして使用します。
ここで小さい動作変更が暗黙に含まれていることに注意してください。以下のステートメントを考えます。
C1Excel1.Save("somefile.xlsx");
Excel for .NET の以前のバージョンでは、このステートメントで BIFF8 ファイルが(無効な拡張子で)保存されました。今は、このステートメントで OpenXml ファイルが(有効な拡張子で)保存されます。このようなコードがアプリケーションに含まれている場合、アップグレード時にそれを以下のように変更する必要があります。
C# コードの書き方
C# |
コードのコピー
|
---|---|
// 無効な拡張子を持つファイルを意図的に保存 C1Excel1.Save("somefile.xlsx", FileFormat.Biff8); |
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim wb As New C1XLBook() |
C# コードの書き方
C# |
コードのコピー
|
---|---|
C1XLBook wb = new C1XLBook(); |
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim wb As New C1XLBook() ' 何かコンテンツを追加 Dim sheet As XLSheet = wb.Sheets(0) Dim i As Integer For i = 0 To 9 sheet(i,0).Value = i + 1 Next i ' OpenXml 形式ファイルにエクスポート wb.Save("C:\test.xlsx") ' あるいは ' OpenXml 形式ファイルにエクスポート wb.Save("C:\test.xlsx", C1.C1Excel.FileFormat.OpenXml) |
C# コードの書き方
C# |
コードのコピー
|
---|---|
C1XLBook wb = new C1XLBook(); // 何かコンテンツを追加 XLSheet sheet = wb.Sheets[0]; for (int i = 0; i <= 9; i++) { sheet[i,0].Value = i + 1; } // OpenXml 形式ファイルにエクスポート wb.Save(@"C:\test.xlsx"); // あるいは小計を作成する // OpenXml 形式ファイルにエクスポート wb.Save(@"C:\test.xlsx", C1.C1Excel.FileFormat.OpenXml); |