Excel

【C# エクセル 】無料でExcelの出力・読み込み・操作がすべて可能な新しいライブラリ「SpreadsheetLight」

【C# エクセル 】無料でExcelの出力・読み込み・操作がすべて可能な新しいライブラリ「SpreadsheetLight」のアイキャッチ

はじめに

無料で使えてエクセルも不要、読み込み・書き込み・操作もできてMITライセンスなエクセルライブラリ「SpreadSheetLightを紹介します。

今までC#でExcelを扱うには、Microsoft.Office.Interop.Excel・ClosedXML・NPOIなどが有名でしたが、エクセルが必要であったり、グラフ挿入ができなかったり、どれも一長一短な感じでした。

2020年末に新しく公開された「SpreadsheetLight」はそのすべてを解決してくれるライブラリです。

エクセルとLibreOfficeの、「出力」「読み込み」「操作(グラフや罫線、計算式など)」に対応しており、エクセルのインストールも不要です。無料でライセンスもMITなので、業務でも使いやすいライブラリです。

※具体的な使い方も別記事で分かりやすく解説しています。記事末「まとめ」のリンクもご覧ください。

この記事の内容
  • SpreadsheetLightの概要
  • ライセンス・人気度
  • サンプルコード

SpreadsheetLightの概要

2020年11月に公開された新しいライブラリです。xlsx形式のみ対応なので、ClosedXMLと似ていますが、ClosedXMLが対応していない、「グラフ挿入」ができる点がポイントです。

  • Excel2007 ~ の「xlsx形式」・ LibreOffice calc のファイルに対応
  • 読み込み・書き込み・操作が可能 (グラフの挿入もできる)
  • 豊富なサンプル・チュートリアルもあり。
  • 5400万個のセルを6分強で作成可能 (公式HP)
  • NuGetでのダウンロード数は80万回

「xls」はサポート外ですが、「xlsx」に変換すれば使用できます。

こんなことに使える

エクセルの読み/書き・操作が行えるので、以下のような作業に使えそうです。

  • エクセルデータ集計を自動化する
  • CSVなどの数値データを、グラフ付のエクセルファイルに自動変換する
  • NetOfficeなど遅いライブラリと入れ替えて処理の高速化をする

ライセンス・人気度

ライセンスMIT
.NET バージョン.NET Standard 2.0
NuGetダウンロード数     800k
GitHub Star数  --- ※GitHubページは存在しません
公開日2020年11月14日     

公式ページ

公式HPは以下です。商用ソフトのページのような外観ですが、FAQにて無料と記載されています。
オープンソースですがGitHubによる公開ではなく、ソースコードを公式HPからZIPでダウンロードする形式です。

公式HP: http://spreadsheetlight.com/

サンプルコード

「文字列」「数式」「日付」などをエクセルに入力して保存するコードは以下の通りです。
公式ページのサンプルをベースにしています。

※ サンプルの原文は、公式HPをご覧ください。

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;

namespace ConsoleAppSpreadSheetLight
{
    class Program
    {
        static void Main(string[] args)
        {
            SLDocument sl = new SLDocument();

            //
            // Bool 文字列・数値の入力 例です
            //

            // A1に Bool型のTrueを設定します  (Excel:TRUE、LibreOffice:1)
            sl.SetCellValue("A1", true);

            // B3に 数値(円周率)を入力します
            sl.SetCellValue("B3", 3.14159);

            // 4行目の2列目(B4)に、数値を文字列として入力します
            sl.SetCellValueNumeric(4, 2, "3.14159");

            // C6に 文字列を入力します
            sl.SetCellValue("C6", "This is at C6!");

            // I6に & や <> など記号付の文字列を入力します
            sl.SetCellValue("I6", "Dinner & Dance costs < $10");

            //
            // 数式の入力 例です
            //
            sl.SetCellValue(7, 3, "=SUM(A2:T2)");

            // 「'==」のように頭に'シングルクォートをつけると文字列として認識されます

            //
            // ループを使ったセルへの入力例です
            //

            // 2行目の1列目(A1)から、2行目の20列目(T1) に1~20の値を入力します。
            for (int i = 1; i <= 20; ++i) sl.SetCellValue(2, i, i);

            //
            // 参照・範囲指定方法です
            //

            // セルの参照やセルの範囲は、SLConvertクラスを使用します
            sl.SetCellValue(SLConvert.ToCellReference(7, 4), string.Format("=SUM({0})", SLConvert.ToCellRange(2, 1, 2, 20)));

            //
            // 日付の入力とスタイルの設定方法です
            //

            // 日付にはフォーマットコードが必要です。
            // 指定しない場合、浮動小数点数のように表示されてしまいます

            // C8セルに日付を入力します。(日時はデタラメ)
            sl.SetCellValue("C8", new DateTime(3141, 5, 9));

            // スタイルを作成して、FormatCodeを設定します。
            SLStyle style = sl.CreateStyle();
            style.FormatCode = "d-mmm-yyyy";

            // C8セルにスタイルを設定します。
            sl.SetCellStyle("C8", style);

            //
            // 数値へのスタイルの設定方法です
            //

            // 9行4列目(D4セル)に数値を入力します(数値はデタラメ)
            sl.SetCellValue(9, 4, 456.123789);

            // 上記セルにスタイルを設定します。
            // FormatCodeプロパティを使用するだけなので、新しいSLStyleを作成する必要はありません。
            style.FormatCode = "0.000%";
            sl.SetCellStyle(9, 4, style);

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

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

実行結果

以下のエクセルファイル(xlsx)ファイルが生成されます。

SpreadsheetLightの実行結果を説明する画像

※ LibreOffice Calc で開いた際の画像です。

まとめ

無料のエクセルライブラリ「SpreadsheetLight」をご紹介しました。
「エクセルの読み・書き・操作をしたい」という方にはぴったりなライブラリだと思います。

以下の記事で、SpreadsheetLightの詳しい使い方を解説しています。合わせてご覧ください。

  • SpreadsheetLightをNuGetでインストール&表の作成する。
  • SpreadsheetLightでグラフを挿入する。
  • SpreadsheetLightで罫線を設定する。

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

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

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

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

COMMENT

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