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」をインストールする.
動作確認
以下,動作確認用のソースコードと生成された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ファイルの中身はこんな感じ.
その他
以下のページにグラフ以外のサンプルも多数ある.
NetOffice - MS Office in .NET - Home
【NetOffice】【Excel】NetOfficeのまとめ | 創造的プログラミングと粘土細工(こっちは日本語)
カテゴリー
- .NET (28)
- Accord.NET (3)
- AForge.NET (4)
- Android (1)
- AR (1)
- C# (35)
- C++ (17)
- d3.js (1)
- Deep Learning (3)
- Excel (2)
- javascript (1)
- LINQ (2)
- NuGet (20)
- OpenCV (17)
- OpenCV 3.0 (5)
- Programming (46)
- python (5)
- SVG (1)
- VBA (1)
- Windows フォーム アプリケーション (10)
- コンピュータビジョン (13)
- ディジタル信号処理 (2)
- ディジタル画像処理 (2)
- 可視化 (1)
- 機械学習 (4)
- 統計 (1)