C#でExcelファイルを作成・グラフを挿入する NetOfficeによる方法

C#からExcelファイルを作って,グラフも挿入したい.

以前,以下の記事でClosedXmlというライブラリを使ってC#から簡単にExcelファイルを作る方法を紹介したが,グラフの挿入が出来ないのがグラフの挿入が出来ないのが気になっていた.
C#でExcelファイルを作成する ClosedXmlを使用 - whoopsidaisies's diary

NetOfficeというライブラリを使えば,ClosedXmlと同じくらい簡単にExcelファイルが作成でき,さらにグラフの挿入も行えるので,今回はその方法を紹介する.

NetOfficeのインストール

NetOfficeはMicrosoft Officeにアクセスするための.NETのライブラリで,今回紹介するExcel以外にも,Word, PowerPoint等にもアクセスできるらしい.

インストールはNuget経由で可能.プロジェクトを右クリックして「NuGetパッケージの管理」を選択する.オンラインから検索て「NetOffice.Excel」をインストールする.

f:id:whoopsidaisies:20140619095605p:plain

動作確認

以下,動作確認用のソースコードと生成されたExcelファイルの中身.実行環境ではExcel2010がインストール済み.

class Program
{
    static void Main(string[] args)
    {
        // Excelを開く
        using (var excelApplication = new NetOffice.ExcelApi.Application())
        {
            // ワークブックを追加
            var workBook = excelApplication.Workbooks.Add();
            // ワークシートを取得
            var workSheet = (NetOffice.ExcelApi.Worksheet)workBook.Worksheets[1];

            // データの入力
            workSheet.Cells[1, 2].Value = "ブラウザシェア";
            workSheet.Cells[2, 1].Value = "IE";
            workSheet.Cells[2, 2].Value = "52.56%";
            workSheet.Cells[3, 1].Value = "Chrome";
            workSheet.Cells[3, 2].Value = "24.7%";
            workSheet.Cells[4, 1].Value = "Firefox";
            workSheet.Cells[4, 2].Value = "12.92%";
            workSheet.Cells[5, 1].Value = "その他";
            workSheet.Cells[5, 2].Value = "=1-B2-B3-B4";
                
            // グラフオブジェクトの追加
            var chart = ((NetOffice.ExcelApi.ChartObjects)workSheet.ChartObjects()).Add(70, 100, 375, 225);
            // 円グラフに設定
            chart.Chart.ChartType = NetOffice.ExcelApi.Enums.XlChartType.xlPie;
            // データ範囲を指定
            chart.Chart.SetSourceData(workSheet.Range("A1:B5"));

            // 保存(環境に合わせて拡張子xlsとかでも大丈夫みたい)
            workBook.SaveAs(@"d:\test.xlsx");

            // Excelを終了する
            excelApplication.Quit();
        }
    }
}

出来上がったExcelファイルの中身はこんな感じ.

f:id:whoopsidaisies:20140619094620p:plain

その他

以下のページにグラフ以外のサンプルも多数ある.
NetOffice - MS Office in .NET - Home
【NetOffice】【Excel】NetOfficeのまとめ | 創造的プログラミングと粘土細工(こっちは日本語)