2011年11月1日火曜日

OpenXMLを使用して、サーバーサイドでExcelファイルを生成(2)

EPPlusを使用した、Webアプリのサンプルプログラム(新規作成編)

Imports System.IO
Imports OfficeOpenXml

Protected Sub Button1_Click(ByVal sender As Object, _
                                    ByVal e As System.EventArgs)  Handles Button1.Click
        'ファイルの場所
        Dim strFileName As String = "newFile.xlsx"
        Dim strFilePath As String = Server.MapPath(strFileName)
        Dim newFile As FileInfo = New FileInfo(strFilePath)

        Dim strData() As String = _
               {"品名", "鉛筆", "消しゴム", "ボールペン", "サインペン", "修正ペン"}

        Dim i As Integer

        If newFile.Exists Then
            newFile.Delete()
            'ファイルが存在する場合は削除します。
            newFile = New FileInfo(strFilePath)
        End If

        'ExcelPackage クラスを利用してデータセットのデータをシートにマッピング
        Using xlPackage As ExcelPackage = New ExcelPackage(newFile)

            Dim worksheet As ExcelWorksheet = _
                   xlPackage.Workbook.Worksheets.Add("Sheet1")

            For i = 1 To strData.Length
                worksheet.Cells(i, 1).Value = strData(i - 1)
            Next  i

            'ヘッダーとなる項目を装飾する
            Using r As ExcelRange = worksheet.Cells(1, 1)
                '塗りつぶしの色を指定
                r.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid
                r.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.SkyBlue)

                '中央揃え
                r.Style.HorizontalAlignment = Style.ExcelHorizontalAlignment.Center
            End Using

            xlPackage.Save()

        End Using

        Response.Redirect(strFileName)

End Sub

このサンプルは単純ですが、当然ADO.NETやLINQを使用して、DBからデータを取得することも可能です。

newFile