■ .NET で Excel を操作するライブラリ
[1] NetOffice [2] EPPlus [3] ClosedXML [4] NPOI → 今回は「[1] NetOffice」を扱う
一覧
`# | `ライブラリ名 | `ライセンス | `旧形式(.xls) | 備考 |
1 | NetOffice | MIT | ○ | |
2 | EPPlus | LGPL | × | |
3 | ClosedXML | MIT | × | |
4 | NPOI | Apache License 2.0 | ○ |
■ 環境設定
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.vbImports 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
参考文献
ライブラリ比較
https://creativeweb.jp/aspnet-oss/excel-tools/https://84zume.wordpress.com/2012/04/14/%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E5%81%B4%E3%81%A7excel%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B%EF%BC%88epplus%E3%81%A7%EF%BC%89/
http://iwa4.hatenablog.com/entry/2012/08/17/191326
NetOffice
http://whoopsidaisies.hatenablog.com/entry/2014/06/19/101032EPPlus
http://devlights.hatenablog.com/entry/2015/04/02/062545http://sh-yoshida.hatenablog.com/entry/2014/11/29/112316
ClosedXML
http://sourcechord.hatenablog.com/entry/2015/06/21/180557http://www.projectgroup.info/tips/Microsoft.NET/tips_0005.html
NPOI
http://mibc.blog.fc2.com/blog-entry-114.htmlhttp://caitsithware.com/wordpress/archives/108
http://blog.okazuki.jp/entry/20091128/1259405232