【ASP.NET MVC】【VB】 Excel をダウンロードする [2] ~ EPPlus編 ~

はじめに

http://blogs.yahoo.co.jp/dk521123/36015198.html
の続き。

 * 今回は、EPPlus を取り扱う

■ 環境設定

http://blogs.yahoo.co.jp/dk521123/35596847.html
で行ったNuGetでインストールする

[1] Visual Studio で [ツール]-[NuGetパッケージ マネージャー]-[パッケージ マネージャー コンソール]を選択
[2] コマンド「Install-Package EPPlus」入力する
https://www.nuget.org/packages/EPPlus/

■ サンプル

コントローラ

ExcelUsingEpPlusController.vb
Imports System.IO
Imports System.Web.Mvc

Namespace Controllers
    Public Class ExcelUsingEpPlusController
        Inherits Controller

        Function Index() As ActionResult
            Return View()
        End Function

        <HttpPost>
        <ValidateAntiForgeryToken()>
        Function Download() As ActionResult
            Using excel = New OfficeOpenXml.ExcelPackage()
                Using workSheet = excel.Workbook.Worksheets.Add("WorksheetName")
                    ' データの入力(Valueはobject型。数値にしておかないとグラフ表示されない)
                    workSheet.Cells(1, 2).Value = "シェア"
                    workSheet.Cells(2, 1).Value = "Tokyo"
                    workSheet.Cells(2, 2).Value = 50.0
                    workSheet.Cells(3, 1).Value = "Osaka"
                    workSheet.Cells(3, 2).Value = 25.25
                    workSheet.Cells(4, 1).Value = "Kanagawa"
                    workSheet.Cells(4, 2).Value = 10.75
                    workSheet.Cells(5, 1).Value = "Others"
                    workSheet.Cells(5, 2).Value = (100 - 50.0 - 25.25 - 10.75)

                    ' グラフ
                    Using chart = workSheet.Drawings.AddChart("Pie Chat", OfficeOpenXml.Drawing.Chart.eChartType.Pie)
                        chart.SetPosition(10, 0, 0, 0)
                        chart.SetSize(400, 400)
                        chart.Series.Add("B2:B5", "A2:A5")
                    End Using

                    ' 出力
                    Using memoryStream = New MemoryStream()
                        excel.SaveAs(memoryStream)
                        Return File(memoryStream.ToArray(), "application/msexcel", "Demo2.xlsx")
                    End Using

                End Using
            End Using

        End Function
    End Class
End Namespace

ビュー

Index.vbhtml
@Code
    ViewData("Title") = "Index"
End Code

<h2>Index</h2>

@Using (Html.BeginForm("Download", "ExcelUsingEpPlus", FormMethod.Post))
    @Html.AntiForgeryToken()
    @<input type="submit" value="Download" />
End Using

■ 注意

グラフが表示されない

 * 以下のように値を文字列にしてしまうと、グラフ表示されなくなるので注意。
~~~
workSheet.Cells(2, 2).Value = "50.0"
~~~


関連記事

ASP.NET MVC】【VBExcel をダウンロードする [1] ~ NetOffice編 ~

http://blogs.yahoo.co.jp/dk521123/36015198.html