HOME >> Tips >> Microsoft.NET >> コードサンプル

OpenXML 形式で Excel ファイルを作成する方法

 
文書番号:20206




OpenXML 形式で Excel ファイルを作成する方法。

Microsoft からリリースされている「Open XML SDK 2.0 for Microsoft Office」を使用して OpenXML 形式の Excel ファイル(拡張子がxlsx)を作成します。
Excel がインストールされていない環境でも作成することができますが、旧来の xls形式の Excel ファイルは作成できません。

【「Open XML SDK 2.0 for Microsoft Office」を入手する】

  1. Microsoft ダウンロードセンターへアクセスします。
    http://www.microsoft.com/ja-jp/download/details.aspx?id=5124

    「ダウンロード」ボタンをクリックします。

    クリックで拡大
  2. 「OpenXMLSDKv2.msi」と「OpenXMLSDKTools.msi」の両方にチェックを入れて「次へ」をクリックします。

    クリックで拡大
  3. 画面下部に「~保存しますか?」と表示されたら保存ボタンをクリックして保存します。

    クリックで拡大
  4. ダウンロードした「OpenXMLSDKv2.msi」をダブルクリックして起動します。

    クリックで拡大
  5. セキュリティの警告ダイアログが表示された場合は「実行」をクリックします。

    クリックで拡大
  6. インストールウィザードが起動します。
    「次へ」をクリックして進みます。

    クリックで拡大
  7. 【ライセンス条項】
    ライセンス条項を確認し、「同意する」を選択して「次へ」をクリックします。

    クリックで拡大
  8. 【インストールフォルダの選択】
    インストール先を選択して「次へ」をクリックします。

    クリックで拡大
  9. 【インストールの確認】
    「次へ」をクリックしてインストールを実行します。

    クリックで拡大
  10. インストール中です。
    しばらく待ちます。

    クリックで拡大
  11. インストールが完了したら「閉じる」をクリックして終了します。

    クリックで拡大
  12. インストールディレクトリ内にOpenXMLのSDKのdllがあることが確認できます。
    画面の例では「C:\Program Files (x86)\Open XML SDK\V2.0\lib」にあります。

    クリックで拡大

【サンプル】

  • OpenXML SDK を参照設定します。
    参照設定の画面で「.NET」タブ内の「DocumentFormat.OpenXml」を追加します。

    クリックで拡大

  • 
    Imports DocumentFormat.OpenXml
    Imports DocumentFormat.OpenXml.Spreadsheet
    Imports DocumentFormat.OpenXml.Packaging
    

    
    Private Sub CreateExcel()
    
        ' Excelドキュメントを作成
        Dim doc As SpreadsheetDocument = SpreadsheetDocument.Create("D:\test.xlsx", SpreadsheetDocumentType.Workbook)
    
        'ワークブックを追加
        Dim wbp As WorkbookPart = doc.AddWorkbookPart
        wbp.Workbook = New Workbook
    
        'ワークブックへワークシート追加
        Dim wsp As WorksheetPart = wbp.AddNewPart(Of WorksheetPart)()
    
        ' WorkSheetの作成
        Dim ws As Worksheet = New Worksheet()
        ' SheetDataの作成
        Dim sd As SheetData = New SheetData()
        ' Defualt Cell
        Dim textCell = New Cell() With {.DataType = CellValues.InlineString}
    
        ' 書き込むテキストデータの作成
        Dim texts = New Text() {New Text("C1"), New Text("A2"), New Text("B3")}
    
    
        ' テキストデータのセル
        Dim dataCells = New Cell() {DirectCast(textCell.Clone(), Cell), DirectCast(textCell.Clone(), Cell), DirectCast(textCell.Clone(), Cell)}
        For i As Integer = 0 To dataCells.Length - 1
            dataCells(i).AppendChild(Of InlineString)(New InlineString(texts(i)))
        Next
    
        ' 行と列を作成して、テキストデータを内包させる。
        Dim rows = New Row() {New Row(New Cell(), New Cell(), dataCells(0)) _
                            , New Row(dataCells(1), New Cell(), New Cell()) _
                            , New Row(New Cell(), dataCells(2), New Cell()) _
                             }
    
        ' SheetData へ行を追加
        For Each r As Row In rows
            sd.AppendChild(Of Row)(r)
        Next
    
        ' WorkSheet へ SheetData を追加しそれをWorkSheetPart へ追加
        ws.AppendChild(Of SheetData)(sd)
        wsp.Worksheet = ws
    
        ' Sheetsを作成
        Dim sheets As Sheets = doc.WorkbookPart.Workbook.AppendChild(Of Sheets)(New Sheets())
    
        ' Sheetを作成
        Dim wsheet = New Sheet() With {.Id = doc.WorkbookPart.GetIdOfPart(wsp), _
                                       .SheetId = 1, _
                                       .Name = "SheetName55"}
    
        ' Sheetの追加
        sheets.Append(wsheet)
    
        ' Workbookの保存
        wbp.Workbook.Save()
    
        'ドキュメントを閉じる
        doc.Close()
    
    End Sub
    
【参考情報】

[msdn] Open XML SDK 2.0 を使用して Excel 2010 ブックを生成する
http://msdn.microsoft.com/ja-jp/library/office/hh180830(v=office.14).aspx

[msdn] 10 行でズバリ!! [VB] Office - Open XML ドキュメントの作成
https://code.msdn.microsoft.com/10-VB-Office-Open-XML-b1d18d89/