Excel

【超簡単】Excel不要の最新ライブラリ 「SpreadsheetLight」でExcelにグラフ(チャート)を挿入する方法【C#】

はじめに

C#で使える無料の最新Excelライブラリ、「SpreadsheetLight」でExcelにグラフ(チャート)を挿入する方法について解説します。少ないコードで簡単に挿入することが出来ます。

この記事の内容

SpreadsheetLightでExcelにグラフ(チャート)を表示する方法

  • 実行時の表示イメージ
  • 全体コード
  • コードのポイント

実行時のグラフ表示イメージ

後述のコードを実行すると、以下の棒グラフ付のエクセルが作成されます。

全体コード

棒グラフ付のエクセルファイルを出力するコードです。
前半は、前回の解説した表を作成するコードをそのまま使っています。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// SpreadsheetLight関連で使用します
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;
using SpreadsheetLight;
using SpreadsheetLight.Charts;

namespace ConsoleAppSpreadsheetLight2
{
    class Program
    {
        static void Main(string[] args)
        {

            SLDocument sl = new SLDocument();

            // 項目名称を入力します
            sl.SetCellValue("A1", "氏名");
            sl.SetCellValue("B1", "スコアA");
            sl.SetCellValue("C1", "スコアB");
            sl.SetCellValue("D1", "スコアC");
            sl.SetCellValue("E1", "スコア合計");

            // 氏名の内容を入力します
            sl.SetCellValue("A2", "田中");
            sl.SetCellValue("A3", "鈴木");
            sl.SetCellValue("A4", "山田");

            // 各人のスコアを入力します
            for (int i = 2; i < 2 + 3; i++) { sl.SetCellValue(2, i, i * 10); }
            for (int i = 2; i < 2 + 3; i++) { sl.SetCellValue(3, i, i * 20); }
            for (int i = 2; i < 2 + 3; i++) { sl.SetCellValue(4, i, i * 30); }

            // 各人の合計のため、SUM関数を入力します。

            // ライブラリの機能を使って、行・列の番号から、A1:A5 のような「範囲の文字列」に変換します
            string range1 = SLConvert.ToCellRange(2, 2, 2, 4);
            string range2 = SLConvert.ToCellRange(3, 2, 3, 4);
            string range3 = SLConvert.ToCellRange(4, 2, 4, 4);

            // SUM関数を入力します
            sl.SetCellValue(2, 5, "=SUM(" + range1 + ")");
            sl.SetCellValue(3, 5, "=SUM(" + range2 + ")");
            sl.SetCellValue(4, 5, "=SUM(" + range3 + ")");

            // グラフ(チャート)オブジェクトを生成します
            SLChart chart;

            // オプション設定用です
            SLCreateChartOptions option = new SLCreateChartOptions();

            // 行の内容を系列にするように設定します
            option.RowsAsDataSeries = true;

            // グラフにするデータの範囲と、オプション設定します
            chart = sl.CreateChart("A1", "E4", option);

            // 棒グラフを設定します
            chart.SetChartType(SLColumnChartType.ClusteredColumn);

            // グラフの大きさを指定します( top, left, buttom, rightの順です)
            chart.SetChartPosition(5,  2, 20, 8);

            // グラフをエクセルに挿入します
            sl.InsertChart(chart);

            // ファイル名を指定して保存します。
            sl.SaveAs("SpreadsheetLightTest.xlsx");

            // 終了待ちです。
            Console.WriteLine("End of program");
            Console.ReadLine();

        }
    }
}

コードのポイント

全体コード内の、グラフ表示関連の部分をポイントとして解説します。

※下記で紹介していないオプション設定については、本家サイトの「Exsample」の「Extensive documentation」と表示されている、.chmファイル(DL形式のヘルプ)で確認することが出来ます。

グラフのオプション設定

以下のコードで、グラフのオプションを設定します。
今回はグラフの「行方向」を系列として使いたかったので、RowsAsDataSeriesをTrueに設定しています。

    // オプション設定用です
            SLCreateChartOptions option = new SLCreateChartOptions();

            // 行の内容を系列にするように設定します
            option.RowsAsDataSeries = true;

データの範囲・グラフの種類の選択

以下のコードで、「グラフにしたいデータの範囲」と「グラフの種類」を設定します。

CreateChart()の引数で、グラフにしたいデータの範囲を(項目も含めて)指定します。また、オプションを指定したい場合もこの関数で設定します。

SetChartType() の引数で、グラフの種類を設定します(今回はColumnChart:縦棒グラフ)

     // グラフにするデータの範囲と、オプション設定します
            chart = sl.CreateChart("A1", "E4", option);

            // 棒グラフを設定します
            chart.SetChartType(SLColumnChartType.ClusteredColumn);

グラフのサイズ設定と挿入

以下のコードで、挿入するグラフの大きさの設定とグラフの挿入を設定します。
( 位置の単位は未調査(セルの数?)です、適宜表示結果に合わせて修正してしください m(_ _)m )

最後に、コード冒頭で作成したエクセルのオブジェクト(sl) に 上述したグラフのオブジェクトを設定せればグラフの挿入は完了です。

            // グラフの大きさを指定します( top, left, buttom, rightの順です)
            chart.SetChartPosition(5,  2, 20, 8);

            // グラフをエクセルに挿入します
            sl.InsertChart(chart);

まとめ

C#で使える無料の最新Excelライブラリ「SpreadsheetLight」で、Excelにグラフ(チャート)を挿入する方法について解説しました。お役に立てばうれしいです。

応援・要望お待ちしてます

ブログを見ていて「この辺を詳しく知りたい」「このライブラリの使い方を知りたい」「こんなことで困ってる」...etc があれば、コメント・問い合わせ・Twitterで教えてください。質問・ご要望に合わせて解説記事を作ります。

ブログを気に入っていただけたり、「応援してもいいよ」という方がいたら、ブログやSNSでの紹介をお願いします。 あたたかい応援は、中の人の更新の大きな励みになります。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です