Excel スプレッドシートを操作するためのオープン ソース .NET ライブラリ

ClosedXML を使用すると、Microsoft Excel ドキュメントの読み取り、操作、および書き込みが可能になります

ClosedXML は、Microsoft Excel 2007+ (.xlsx、.xlsm) ドキュメントの読み取り、操作、書き込みを行うオープン ソースの C# API です。 API を使用すると、Excel アプリケーションを使用せずに Excel ファイルを作成し、拡張機能を使用してファイルを読み取ることができます。

API を使用すると、背景色とセルの境界線を使用してワークブックのスタイルを設定できます。ワークシートを追加、削除、移動し、Excel 内でデータ型を管理できます。

Previous Next

ClosedXML の概要

ClosedXML をインストールする推奨される方法は、NuGet からです。インストールを高速化するには、次のコマンドを使用してください。

NuGet から ClosedXML をインストールする

 Install-Package ClosedXML

C# を使用して新しいワークブックを無料で作成する

CLosedXMLはC# .NET開発者が新しいExcelワークシートを作成できるようにします。 XLWorkbook() メソッドを使用して空白の料理本を作成できます。 ライブラリには、ワークシート文書を管理するための重要な機能がいくつか含まれています。 ワークシートを調理書に追加したり、セルや列を追加したり、スタイルを行や列に適用したり、不要なセルを削除したりすることができます。

.NET APIで新しいクックブックを作成する


using (var workbook = new XLWorkbook())
{
    var worksheet = workbook.Worksheets.Add("Sample Sheet");
    worksheet.Cell("A1").Value = "Hello World!";
    worksheet.Cell("A2").FormulaA1 = "=MID(A1, 7, 5)";
    workbook.SaveAs("HelloWorld.xlsx");
}

C# を使用した Excel シートのスタイル設定

オープンソースのCloseXML API は、ソフトウェア開発者がC#コードのほんの数の行でスタイルをExcelシートに適用することを可能にします。 API は、アライメント、ボーダー、塗りつぶし、フォント、番号形式、スタイリング行、列などを含むスタイリング機能が充実しています。 ライブラリは、ユーザーが自分のニーズに応じてスタイリングを変更することを可能にします。

C#ライブラリを介してExcelシートにスタイルを適用する方法


            var path = Program.BaseCreatedDirectory;
            new StyleFont().Create(Path.Combine(path, "styleFont.xlsx"));
            new StyleFill().Create(Path.Combine(path, "styleFill.xlsx"));
            new StyleBorder().Create(Path.Combine(path, "styleBorder.xlsx"));
            new StyleAlignment().Create(Path.Combine(path, "styleAlignment.xlsx"));
            new StyleNumberFormat().Create(Path.Combine(path, "styleNumberFormat.xlsx"));
            new StyleIncludeQuotePrefix().Create(Path.Combine(path, "styleIncludeQuotePrefix.xlsx"));

C# を使用して Excel でオート フィルターを使用する

クローズドXMLライブラリは、Excelワークシート内のフィルタを適用するための完全なサポートが含まれています。 ライブラリには、ユーザーの利便性のためにさまざまな種類のフィルタが含まれています。 フィルターを特定の範囲に適用し、フィルタを値に適用し、独自のカスタムフィルタを作成することもできます。

C#でExcelで自動フィルターを適用する方法

public class DynamicAutoFilter : IXLExample
    {
        public void Create(string filePath)
        {
            var wb = new XLWorkbook();
            IXLWorksheet ws;
            #region Single Column Numbers
            String singleColumnNumbers = "Single Column Numbers";
            ws = wb.Worksheets.Add(singleColumnNumbers);
            // Add a bunch of numbers to filter
            ws.Cell("A1").SetValue("Numbers")
                         .CellBelow().SetValue(2)
                         .CellBelow().SetValue(3)
                         .CellBelow().SetValue(3)
                         .CellBelow().SetValue(5)
                         .CellBelow().SetValue(1)
                         .CellBelow().SetValue(4);
            // Add filters
            ws.RangeUsed().SetAutoFilter().Column(1).AboveAverage();
            // Sort the filtered list
            //ws.AutoFilter.Sort(1);
            #endregion
            #region Multi Column
            String multiColumn = "Multi Column";
            ws = wb.Worksheets.Add(multiColumn);
            ws.Cell("A1").SetValue("First")
             .CellBelow().SetValue("B")
             .CellBelow().SetValue("C")
             .CellBelow().SetValue("C")
             .CellBelow().SetValue("E")
             .CellBelow().SetValue("A")
             .CellBelow().SetValue("D");
            ws.Cell("B1").SetValue("Numbers")
                         .CellBelow().SetValue(2)
                         .CellBelow().SetValue(3)
                         .CellBelow().SetValue(3)
                         .CellBelow().SetValue(5)
                         .CellBelow().SetValue(1)
                         .CellBelow().SetValue(4);
            ws.Cell("C1").SetValue("Strings")
             .CellBelow().SetValue("B")
             .CellBelow().SetValue("C")
             .CellBelow().SetValue("C")
             .CellBelow().SetValue("E")
             .CellBelow().SetValue("A")
             .CellBelow().SetValue("D");
            // Add filters
            ws.RangeUsed().SetAutoFilter().Column(2).BelowAverage();
            // Sort the filtered list
            //ws.AutoFilter.Sort(3);
            #endregion
            using (var ms = new MemoryStream())
            {
                wb.SaveAs(ms);
                var workbook = new XLWorkbook(ms);
                #region Single Column Numbers
                //workbook.Worksheet(singleColumnNumbers).AutoFilter.Sort(1, XLSortOrder.Descending);
                #endregion
                #region Multi Column 
                //workbook.Worksheet(multiColumn).AutoFilter.Sort(3, XLSortOrder.Descending);
                #endregion
                workbook.SaveAs(filePath);
                ms.Close();
            }
        }
    }
 日本