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」を入手する】
- Microsoft ダウンロードセンターへアクセスします。
http://www.microsoft.com/ja-jp/download/details.aspx?id=5124
「ダウンロード」ボタンをクリックします。
クリックで拡大 - 「OpenXMLSDKv2.msi」と「OpenXMLSDKTools.msi」の両方にチェックを入れて「次へ」をクリックします。
クリックで拡大 - 画面下部に「~保存しますか?」と表示されたら保存ボタンをクリックして保存します。
クリックで拡大 - ダウンロードした「OpenXMLSDKv2.msi」をダブルクリックして起動します。
クリックで拡大 - セキュリティの警告ダイアログが表示された場合は「実行」をクリックします。
クリックで拡大 - インストールウィザードが起動します。
「次へ」をクリックして進みます。
クリックで拡大 - 【ライセンス条項】
ライセンス条項を確認し、「同意する」を選択して「次へ」をクリックします。
クリックで拡大 - 【インストールフォルダの選択】
インストール先を選択して「次へ」をクリックします。
クリックで拡大 - 【インストールの確認】
「次へ」をクリックしてインストールを実行します。
クリックで拡大 - インストール中です。
しばらく待ちます。
クリックで拡大 - インストールが完了したら「閉じる」をクリックして終了します。
クリックで拡大 - インストールディレクトリ内に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/