c#でExcelを編集可能なライブラリ

c#でExcelファイルの読み込み・書き込み処理ができると、システムの幅が広がります。 VBAでしたらExcel上でしか実行できませんが、c#で実現できれば、ウェブアプリにしたりWindowsアプリにしたり AWS Lambda などのクラウド上にのせたり、いろいろなことができるようになります。

この記事では、c#でExcelを編集可能なライブラリについて紹介します。

Microsoft.Office.Interop.Excel

公式ドキュメント https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel

Microsoft.Office.Interop.Excel は Excelアプリケーションを直接操作するライブラリです。そのため、実行するサーバーやPCにExcelがインストールされている必要があります。

ただし、メリットもあり、再計算などExcelアプリケーションの機能がすべて使用できるのもその1つです。

サンプルコード

Excelファイルを開き、再計算して保存して終了という処理を行うコードです。 一部の変数定義や値セットを省略しています。

    //using Excel = Microsoft.Office.Interop.Excel;

        // Excelインスタンスを生成する
        Excel.Application xlApp = new Excel.Application();

        // Excelウィンドウを表示しない
        xlApp.Visible = false;

        // Excel警告メッセージを表示しない
        xlApp.DisplayAlerts = false;

        try
        {
            // Excelファイルを開く
            Excel.Workbook templateBook = xlApp.Workbooks.Open(inputFilePath);

            //再計算
            xlApp.CalculateFull();

            // xlsx 形式で出力ファイルパスへ保存する
            templateBook.SaveAs(outputFilePath);

            //Excelファイルを閉じる
            templateBook.Close();

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        finally
        {
            xlApp.Quit();
            // Excelインスタンスを破棄する

        }

EPPlus

公式ドキュメント https://epplussoftware.com/

Github https://github.com/EPPlusSoftware/EPPlus

Nuget https://www.nuget.org/packages/EPPlus/

ライセンスが LGPL から Poly Noncommercial に変更になっています。

公式ドキュメントには、コマーシャルライセンス(Commercial license)と開発者(Developer)の2つのライセンスの表記があります。 ライセンスドキュメントを熟読してライブラリ選定が必要です。

サンプルコード

EPPlusを使用して、xlsxファイルを新規作成して保存するコードです。

    //using OfficeOpenXml;

        public void EPPlusTutorial1()
        {
            FileInfo xlsFile = new FileInfo(@"d:\epplussample.xlsx");
            using (var package = new ExcelPackage(xlsFile)){
                var sheet = package.Workbook.Worksheets.Add(epplus);
                sheet.Cells[A1].Value = Hello UE;

                package.Save();
            }
        }

ClosedXML

Github https://github.com/ClosedXML/ClosedXML

Nuget https://www.nuget.org/packages/ClosedXML

ClosedXMLは、Excel2007形式(xlsx, xlsm)のファイルを作成、編集、書き込みするためのライブラリです。

サンプルコード

これも同じように、新規ブックファイルに書き込んで保存するコードです。

//using ClosedXML.Excel;

    public void ClosedXMLTutorial1()
    {
        const string excelFilePath = @"d:\closedxmlsample.xlsx";

        using (XLWorkbook wbook = new XLWorkbook())
        {
            var wsheet = wbook.Worksheets.Add(sample);
            wsheet.Cell(A1).Value = "https://usefuledge.com/";

            wbook.SaveAs(excelFilePath);
        }

    }

NPOI

Github https://github.com/tonyqus/npoi

Nuget https://www.nuget.org/packages/NPOI/

NPOIはExcel2007(xlsx)だけでなく、Excel2003(xls)のファイルも読み書きができるライブラリです。

公式リポジトリの中にサンプルコードが豊富に格納されています。有り難いですね。

File not found · tonyqus/npoi
a .NET library that can read/write Office formats without Microsoft Office installed. No COM+, no interop. - File not found · tonyqus/npoi

サンプルコード

NPOIは他のライブラリに比べると、分かりにくい印象です。

    //using NPOI.XSSF.UserModel;
    //using NPOI.SS.UserModel;

        public void NPOITutorial1()
        {
            string xlsFile = "@d:\npoisample.xlsx";
            IWorkbook book = new XSSFWorkbook();

            ISheet sheet = book.CreateSheet(npoisheet);

            book.Write(new FileStream(xlsFile, FileMode.Create, FileAccess.ReadWrite));
        }

おすすめ本 c#コードレシピ集

c#コードレシピ集は、「文字列を大文字あるいは小文字に変換したい」や「Taskをキャンセルしたい」など逆引き的にコードの書き方を調べられるレシピ集です。

2021年8月に発売された本で、全部で385個のレシピが収録されています。

ジャンルは日付処理やLINQ、並列処理と非同期処理など幅広く記載されています。

Kindle対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。

コメント

タイトルとURLをコピーしました