0.前置き
サーバー側でExcelのブックを作るって需要はそれなりにあると思います。
ちょっと調べ物をしたのでその結果をまとめようと思います。
良いなって思ったライブラリーのサンプルも作ってみました。
1.ライブラリーの紹介
Excelをサーバーサイドで作ることができるライブラリーには以下のようなものがあります。ネットでざっと調べてみました。
名称 | 現行Ver. | OpenXML対応 | 利用難易度 | 開発活発度 |
---|---|---|---|---|
NPOI | 1.2.4 | × | 易 | 活発 |
OpenXML SDK | 2.0 | ○ | 難 | 不明 |
ExcelPackage | 1.0.0.1 | ○ | 易 | 活発でない |
EPPlus | 3.0.0.2 | ○ | 易 | 活発 |
ExcelCreater | 2012 | ○ | 易 | 製品 |
備考
- NPOIはver.1.3からOpenXML対応するらしいです。
- ExcelCreaterはアドバンストソフトウェアの製品です。
CodePlexでも似たような話題があがっていて、こちらはたくさんのライブラリーが列挙されています。
CodePlex: Create Excel (.XLS and .XLSX) file from C#
今回はこの中で、開発が一番活発そうなEPPlusを選択してサンプルを作ってみようと思います。
2.インストール
Nugetでインストールできます。CodePlexからはサンプルアプリケーションが一緒に入っているソースコードをダウンロードすることができます。
3.実際に使ってみる
3-1.こんなファイルを作ってみます
3-2.コードの抜粋
サンプルコード全体はgithubに載せますが、一部抜粋して解説します。
Excelファイルの作成からシートの追加
一番のおおもとがExcelPackageというオブジェクトになります。
[sourcecode language=”csharp”]
using (var package = new ExcelPackage(newFile))
{
var ws = package.Workbook.Worksheets.Add("4月の家計簿");
….
}
[/sourcecode]
セルにデータを追加
セルの特定方法はExcelでよくある”A2″とかのアドレス指定のほかにも、何行・何列という指定方法もできます。
[sourcecode language=”csharp”]
//データの部分
ws.Cells["A2"].Value = "水道光熱費";
ws.Cells["B2"].Value = "電気";
ws.Cells["C2"].Value = 3000;
ws.Cells["D2"].Value = new DateTime(2012, 4, 1);
[/sourcecode]
セルに計算式の追加
Formulaプロパティに式を書きます。
[sourcecode language=”csharp”]
//合計金額を表示
ws.Cells["A9"].Value = "合計";
ws.Cells["B9"].Formula = "SUM(C2:C7)";
[/sourcecode]
棒グラフの作成
グラフは列挙型で用意されているため、それを選択します。今回は積み上げ棒グラフ(?)です。
[sourcecode language=”csharp”]
var chart = (ws.Drawings.AddChart("4月のお金", eChartType.BarStacked) as ExcelBarChart);
chart.Title.Text = "4月のお金";
chart.SetPosition(0, 400);
chart.SetSize(300, 300);
chart.Series.Add("C2:C7", "D2:D7");
[/sourcecode]
4.サンプルを書いてみての補足
使いやすいです、これは。
ソースコードに付属しているサンプルコードも充実しているので習得も容易です。
はまりそう。
5.サンプルコード
サンプルコードはgithubにホスティングしてあります。
EPPlusのサンプル
コード本体
6.最後に
帳票系の知識がないなーとおもって、Excel帳票的な視点から触ってみました。
他にもPDFで帳票を作るツールとか追っかけてみたいです。
コメント