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

.NETExcel を操作するライブラリ

[1] NetOffice
[2] EPPlus
[3] ClosedXML
[4] NPOI

 → 今回は「[1] NetOffice」を扱う

一覧

 * ライセンスについては、以下の関連記事を参照のこと。
`#`ライブラリ名`ライセンス`旧形式(.xls)備考
1NetOfficeMIT
2EPPlusLGPL×
3ClosedXMLMIT×
4NPOIApache License 2.0
http://blogs.yahoo.co.jp/dk521123/35506016.html

■ 環境設定

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

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

■ サンプル

コントローラ

ExcelUsingNetOfficeController.vb
Imports System.IO
Imports System.IO
Imports System.Web.Mvc

Namespace Controllers
    Public Class ExcelUsingNetOfficeController
        Inherits Controller

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

        <HttpPost>
        <ValidateAntiForgeryToken()>
        Function Download() As ActionResult
            Using excelApplication = New NetOffice.ExcelApi.Application()
                ' ワークブックを追加
                Dim workBook = excelApplication.Workbooks.Add()
                ' ワークシートを取得
                Dim workSheet = DirectCast(workBook.Worksheets(1), NetOffice.ExcelApi.Worksheet)

                ' データの入力
                workSheet.Cells(1, 2).Value = "シェア"
                workSheet.Cells(2, 1).Value = "Tokyo"
                workSheet.Cells(2, 2).Value = "50.00%"
                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 = "=1-B2-B3-B4"

                ' グラフオブジェクトの追加
                Dim chartObject = DirectCast(workSheet.ChartObjects(), NetOffice.ExcelApi.ChartObjects)
                Dim chart = chartObject.Add(70, 100, 375, 225)
                ' 円グラフに設定
                chart.Chart.ChartType = NetOffice.ExcelApi.Enums.XlChartType.xlPie
                ' データ範囲を指定
                chart.Chart.SetSourceData(workSheet.Range("A1:B5"))

                ' 保存(xlsx / xls どっちもOK)
                Dim fileName = "demo.xls"
                Directory.CreateDirectory(Server.MapPath(""))
                Dim serverPath = Server.MapPath(fileName)
                workBook.SaveAs(serverPath)

                ' Excelを終了する
                excelApplication.Quit()

                Return File(serverPath, "application/ms-excel", fileName)
            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

続きは、以下の関連記事
http://blogs.yahoo.co.jp/dk521123/36015416.html