Excel for WPF/Silverlight
OpenXml ファイルのインポートとエクスポート (WPFのみ)
タスク別ヘルプ > OpenXml ファイルのインポートとエクスポート (WPFのみ)

Excel for WPF では、Microsoft Excel 2007 OpenXml ファイルを読み書きできるようになりました。OpenXml は、Microsoft によって Office 2007 に導入されたオープンスタンダードベースの形式です。BIFF8 などの独自のバイナリ形式とは異なり、OpenXml は XML に基づき、ドキュメントも公開されているため、OpenXml ファイルはアプリケーションで簡単に操作できます。OpenXml ファイルには、Zip 圧縮されたいくつかの XML ファイルが含まれます。これらのファイルは圧縮されているため、通常、OpenXml ファイルは、.doc や .xls などの従来のドキュメントファイルより小さくなります。

Excel for WPF では、OpenXml ファイルのデータをロードおよび保存したり、情報を書式設定することはできますが、数式はロードまたは保存されません。BIFF 形式では数式が不透過としてコピーされますが、これは、現時点では OpenXML 形式でサポートされていません。数式を含むファイルをロードして保存すると、それらの数式は削除されます。この点は、数式を保持する従来の .xls または BIFF8 形式とは異なります。

OpenXml 形式をサポートするため、C1XLBook の Load メソッドと Save メソッドには、FileFormat パラメータを取るオーバーロードメソッドがあります。このパラメータは、ファイルのロードまたは保存時に、使用するファイル形式を指定するために使用されます。

ファイル名が指定されなかった場合、Excel for WPF は、ファイル名拡張子からファイル形式を推定します。デフォルトでは、"XLSX" および "ZIP" 拡張子を持つファイルは、OpenXml ファイルとしてロードおよび保存されます。その他のファイルは、BIFF8 または .xls 形式としてロードおよび保存されます。

次に例を示します。

C#
コードのコピー
 // ファイル拡張子に基づいてロードおよび保存します
    book.Load("somefile.xls");      // biff 8 ファイルをロードします
    book.Save("somefile.xlsx");     // ファイルを OpenXml として保存します
    book.Save("somefile.zip");      // ファイルを OpenXml として保存します
   
    // FileFormat を指定してロードおよび保存します
    book.Load("somefile.xls", FileFormat.Biff8);
    book.Save("somefile.xlsx", FileFormat.OpenXml);

ストリームからファイルをロードしたり、ストリームに保存するときに形式を指定することもできます。FileFormat が指定されなかった場合、Excel for WPF はデフォルトで BIFF8 形式を使用します。

ここには、小さな動作変更が含まれていることに注意してください。次のステートメントを考えます。

XAML
コードのコピー
book.Save("somefile.xlsx");

これにより、これまでの Excel for WPF では、(間違った拡張子で)BIFF8 ファイルが保存されます。これからは、(正しい拡張子で)OpenXml ファイルが保存されます。アプリケーションにこのようなコードがある場合は、アップグレード時に次のように変更する必要があります。

XAML
コードのコピー
// 意図的に間違った拡張子でファイルを保存します
    book.Save("somefile.xlsx", FileFormat.Biff8);

OpenXml ファイルにブックをエクスポートするには、次の手順に従います。

  1. 既存のブックをロードします。

    コードのコピー
    Dim wb As New C1XLBook()
    wb.Load("C:\C1Excel\test.xlsx")
    ' または
    Dim wb As New C1XLBook()
    wb.Load("C:\C1Excel\test.xlsx", C1.WPF.Excel.FileFormat.OpenXml)
    
    コードのコピー
    C1XLBook wb = new C1XLBook();
    wb.Load(@"C:\C1Excel\test.xlsx");
    // または
    C1XLBook wb = new C1XLBook();
    wb.Load(@"C:\C1Excel\test.xlsx", C1.WPF.Excel.FileFormat.OpenXml);
    
  2. ブックを OpenXml 形式ファイルにエクスポートします。

    コードのコピー
    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:\C1Excel\test.xlsx")
    ' または
    ' OpenXml 形式ファイルにエクスポートします
    wb.Save("C:\C1Excel\test.xlsx", C1.WPF.Excel.FileFormat.OpenXml)
    
    コードのコピー
    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:\C1Excel\test.xlsx");
    // または
    // OpenXml 形式ファイルにエクスポートします
    wb.Save(@"C:\C1Excel\test.xlsx", C1.WPF.Excel.FileFormat.OpenXml);
    
このトピックの内容は、ComponentOne for WPFにのみ適用されます。