【C#】Excel操作:グラフの作成


 グラフを作成する手順


C#でExcelのグラフを作成するには、下記手順で記述します。

/* Excelワークブック・ワークシートオブジェクトの取得 */
ExcelWB = ExcelApp.Workbooks.Item[TargetFile];
ExcelWS = (Worksheet)ExcelWB.Sheets[TargetSheet];

/* Excelチャートオブジェクトの設定 */
ChartObjects ChartObjs = (ChartObjects)ExcelWS.ChartObjects(Type.Missing);

/* チャート作成(行 = 450, 列 = 10, 幅500 高さ 350) */
ChartObject chartObj = charts.Add(450, 10, 500, 350);
Chart ObjChart = chartObj.Chart;

/* チャートの種類を設定(折れ線グラフ) */
ObjChart.ChartType = XlChartType.xlXYScatterLinesNoMarkers;

/* データセット */
Range chartRange = ExcelWS.get_Range(ExcelWS.Cells[1, 1], ExcelWS.Cells[LineX, LineY]);
ObjChart.SetSourceData(chartRange);

  > グラフのタイトル設定はこちらをご参照下さい。



 【例】グラフ作成 =画面=


以前ご紹介した「シートの追加・削除」画面に、新たにグラフ作成機能を下記のように追加しました。



グラフ作成するために、①まずサンプルのデータを作成し、②次にグラフの種類をラジオボタンで選択し、③グラフを作成します。


 【例】グラフ作成用のデータ作成 =ソースコード=


下記のようなデータを作成するためのコードを書きました。


下記コードの中で、Excelのブック名・シート名を取得する仕組み・方法についてはExcel情報の取得をご確認下さい。

private void cmdInputGrafData_Click(object sender, EventArgs e)
{
  /* コンボボックスの情報からExcelブック名を取得する */
  TargetFile = cmbExcelBook.Text;

  /* リストボックスの情報からExcelシート名を取得する */
  if (lstExcelSheet.SelectedItems.Count == 0)
  {
    MessageBox.Show("書き込むシートを選択して下さい");
    return;
  }
  TargetSheet = lstExcelSheet.SelectedItem.ToString();

  /* Excelワークブック・ワークシートオブジェクトの取得 */
  ExcelWB = ExcelApp.Workbooks.Item[TargetFile];
  ExcelWS = (Worksheet)ExcelWB.Sheets[TargetSheet];

  /* Excelセルへの書き込むための変数設定 */
  object[,] ExcelData;
  LineX = 5;
  LineY = 5;

  /* ExcelDataオブジェクトの範囲定義 */
  ExcelData = new object[LineX, LineY];

  /* データ作成 */
  for (int i = 0; i < LineX; i++)
  {
    for (int j = 0; j < LineY; j++)
    {
      /* 1行目に年月を設定 */
      if (i == 0)
      {
        switch (j)
        {
          case 1:
            ExcelData[i, j] = "'2017/04";
            break;

          case 2:
            ExcelData[i, j] = "'2017/05";
            break;

          case 3:
            ExcelData[i, j] = "'2017/06";
            break;

          case 4:
            ExcelData[i, j] = "'2017/07";
            break;
        }
      }
      /* 1列目に果物を設定 */
      else if (j == 0)
      {
        switch (i)
        {
          case 1 :
            ExcelData[i, j] = "リンゴ";
            break;

          case 2:
            ExcelData[i, j] = "みかん";
            break;

          case 3:
            ExcelData[i, j] = "バナナ";
            break;

          case 4:
            ExcelData[i, j] = "ぶどう";
            break;
        }
      }
      /* 1行目・1列目以外は数値(行+列)を設定 */
      else
      {
        ExcelData[i, j] = i + j;
      }
    }
  }

  /* 書き込み */
  ExcelRNG = ExcelWS.Range[ExcelWS.Cells[1, 1], ExcelWS.Cells[LineX, LineY]];
  ExcelRNG.Value = ExcelData;

  /* 罫線を付ける */
  ExcelRNG = ExcelWS.get_Range(ExcelWS.Cells[1, 1], ExcelWS.Cells[LineX, LineY]);

  ExcelRNG.Borders.LineStyle = XlLineStyle.xlContinuous;
}



 【例】グラフ作成 =ソースコード=


上記のデータを基にグラフを作成します。

private void cmdMakeGraf_Click(object sender, EventArgs e)
{
  /* コンボボックスの情報からExcelブック名を取得する */
  TargetFile = cmbExcelBook.Text;

  /* リストボックスの情報からExcelシート名を取得する */
  if (lstExcelSheet.SelectedItems.Count == 0)
  {
    MessageBox.Show("書き込むシートを選択して下さい");
    return;
  }
  TargetSheet = lstExcelSheet.SelectedItem.ToString();

  /* Excelワークブック・ワークシートオブジェクトの取得 */
  ExcelWB = ExcelApp.Workbooks.Item[TargetFile];
  ExcelWS = (Worksheet)ExcelWB.Sheets[TargetSheet];

  /* Excelチャートオブジェクトの設定 */
  ChartObjects ChartObjs = (ChartObjects)ExcelWS.ChartObjects(Type.Missing);

  /* チャート作成(行 = 450, 列 = 10, 幅500 高さ 350) */
  ChartObject chartObj = ChartObjs.Add(450, 10, 500, 350);
  Chart ObjChart = chartObj.Chart;

  /* チャートの種類を設定 */
  /* 縦棒 */
  if (rdoColumn.Checked == true)
  {
    ObjChart.ChartType = XlChartType.xlColumnStacked;
  }

  /* 折れ線 */
  if (rdoLine.Checked == true)
  {
    ObjChart.ChartType = XlChartType.xlLine;
  }

  /* 横棒 */
  if (rdoBar.Checked == true)
  {
    ObjChart.ChartType = XlChartType.xlBarStacked;
  }

  /* データセット */
  Range chartRange = ExcelWS.get_Range(ExcelWS.Cells[1, 1], ExcelWS.Cells[LineX, LineY]);
  ObjChart.SetSourceData(chartRange);
}


 【例】グラフ作成 =出力結果=


上記出力結果は下記の通りです。

■ 縦棒


■ 折れ線


■ 横棒


管理人 について

趣味:映画鑑賞・音楽鑑賞・ゲーム・旅行 仕事:会社員(IT関連)
カテゴリー: C#, Excel操作, システム開発 パーマリンク

コメントを残す