C#でWordにグラフを挿入する

Wordのチャートは、データの表示やデータ分析のための便利で使いやすいツールを提供し、著者は直感的な方法で情報を伝えることができます。この記事では、C#を使ってWord文書にチャートを挿入する方法を紹介します。
* [C#でWordに列グラフを挿入する](#cでwordに列グラフを挿入する)
* [C#でWordに折れ線グラフを挿入する]()

## .NET Word ライブラリ
[**Spire.Doc for .NET**](https://www.e-iceblue.com/Introduce/word-for-net-introduce.html)ライブラリをインストールする方法は2つあります：
1. NuGet経由でVisual Studioで 「Spire.Doc 」を検索し、「Install 」をクリックしてプログラムに参照します。
2. 以下のリンクをクリックしてSpire.Doc for .NETパッケージをダウンロードし、解凍した後、BINフォルダ内のSpire.Doc.dllファイルを手動でプログラムに追加します。

https://www.e-iceblue.com/Download/download-word-for-net-now.html


## C#でWordに列グラフを挿入する 
列グラフを使用すると、異なるカテゴリまたはグループ間の量の違いをすばやく比較し、傾向やパターンを特定するのに役立ちます。Wordで列グラフを挿入するには、**`Paragraph.AppendChart(ChartType.Column, float width, float height)`** メソッドを使用します。

>**完全なコードを以下に示します：**
```csharp
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields.Shapes.Charts;
using Spire.Doc.Fields;

namespace CreateColumnChart
{
    class Program
    {
        static void Main(string[] args)
        {
            //Word文書を作成する
            Document document = new Document();

            //セクションの追加
            Section section = document.AddSection();

            //段落を追加する
            Paragraph paragraph = section.AddParagraph();

            //段落に指定サイズの列グラフを追加する
            ShapeObject shape = paragraph.AppendChart(ChartType.Column, 450, 250);

            //チャートを取得し、デフォルトの系列データをクリアする
            Chart chart = shape.Chart;
            chart.Series.Clear();

            //指定した系列名、カテゴリー名、系列値を持つカスタム系列をチャートに追加する
            chart.Series.Add("営業チーム1",
                new[] { "第1四半期", "第2四半期", "第3四半期", "第4四半期" },
                new double[] { 5000, 8000, 9000, 8500 });

            //別のシリーズを追加する
            chart.Series.Add("営業チーム2",
            new[] { "第1四半期", "第2四半期", "第3四半期", "第4四半期" },
            new double[] { 3000, 5000, 7000, 6000 });

            //チャート・タイトルの設定
            chart.Title.Text = "グループ別四半期売上高";

            //Y軸の数値フォーマットの設定
            chart.AxisY.NumberFormat.FormatCode = "#,##0";

            //凡例の位置を設定する
            chart.Legend.Position = LegendPosition.Bottom;

            //結果文書を保存する
            document.SaveToFile("ColumnChart.docx", FileFormat.Docx2019);
        }
    }
}
```
![WordColumnChart.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/e4123109-216e-24ef-ca5d-bc5cc20d92db.png)


## C#でWordに折れ線グラフを挿入する 
折れ線グラフは、時間、順序、または他の連続変数のデータの傾向を示すために一般的に使用される統計グラフです。折れ線グラフは、データの変化を表す線で結ばれた一連のデータ点から構成されます。折れ線グラフを挿入する手順は、列グラフを挿入する手順と同様である。

>**完全なコードは以下の通りである：**
```csharp
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields.Shapes.Charts;
using Spire.Doc.Fields;

namespace CreateColumnChart
{
    class Program
    {
        static void Main(string[] args)
        {
            //Word文書を作成する
            Document document = new Document();

            //セクションの追加
            Section section = document.AddSection();

            //段落を追加する
            Paragraph paragraph = section.AddParagraph();

            //段落に指定サイズの折れ線グラフを追加する
            ShapeObject shape = paragraph.AppendChart(ChartType.Line, 460, 300);

            //チャートを取得し、デフォルトの系列データをクリアする
            Chart chart = shape.Chart;
            chart.Series.Clear();

            //指定された系列名、カテゴリー名、系列値を持つ3つのカスタム系列をチャートに追加する
            string[] categories = { "第1四半期", "第2四半期", "第3四半期", "第4四半期" };
            chart.Series.Add("営業チーム1", categories, new double[] { 1200, 2500, 2500, 3800 });
            chart.Series.Add("営業チーム2", categories, new double[] { 1500, 1800, 3000, 4000 });
            chart.Series.Add("営業チーム3", categories, new double[] { 1200, 2000, 3200, 3600 });

            //チャート・タイトルの設定
            chart.Title.Text = "営業報告";

            //凡例の位置を設定する
            chart.Legend.Position = LegendPosition.Top;

            //結果文書を保存する
            document.SaveToFile("LineChart.docx", FileFormat.Docx2019);
        }
    }
}
```
![WordLineChart.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/08890107-f3f8-872c-c6e1-db2a99e41675.png)


Spire.Doc for .NETが提供する **`Paragraph.AppendChart(ChartType chartType, float width, float height)`** メソッドのChartType列挙型には、MS Wordで定義済みの様々なチャートタイプが含まれています。そのため、列グラフや折れ線グラフの他に、2Dや3Dの棒グラフ(`ChartType.Bar`)、バブルチャート(`ChartType.Bubble`)、円グラフ(`ChartType.Pie`)、散布図(`ChartType.Scatter`)、3Dサーフェスチャート(`ChartType.Surface3D`)などを作成することができます。

* * *
生成された文書から赤い透かしを削除したい場合は、クリックして1ヶ月の試用ライセンスを申請し、テストすることができます。

https://www.e-iceblue.com/TemLicense.html