【C#でエクセル操作】主要ライブラリ比較とコード例

当ページのリンクには広告が含まれています。

スポンサーリンク

C# を使用して Excel を操作するためのライブラリには、いくつかの選択肢があります。

それぞれのライブラリの特徴を紹介します。

  • EPPlus(イーピープラス)
  • ClosedXML(クローズドエックスエムエル)
  • NPOI(エヌポイ)
  • Interop(インターオペラビリティ)
クリックしてジャンプ

EPPlus

Open Office Xml 形式の Excel ファイル (.xlsx) を読み書きするためのオープンソースライブラリです。

セル値、スタイル、チャート、画像、形状など、Excel の高度な機能をサポートしています。

パフォーマンスも良好なため、商用・非商用問わず幅広いプロジェクトで利用されています。

特徴

  • 高度な Excel 機能のサポート
  • パフォーマンスが良い
  • .NET Standard 2.0 に対応

スポンサーリンク

ClosedXML

OpenXML スプレッドシートを簡単に操作できるようにする .NET ライブラリです。

コードを簡単に読み書きし、Excel ドキュメントの生成や編集が容易になります。

フォーマット設定、スタイル、データ検証などの機能を提供しています。

特徴

  • 高レベルの API を提供、使いやすい
  • 広範囲な Excel 機能のサポート
  • ドキュメントの作成と編集が容易

スポンサーリンク

NPOI

Microsoft Office のファイル形式(Excel、Word など)を .NET 環境で操作するためのオープンソースプロジェクトです。

特に Excel の古い形式 (.xls) と新しい形式 (.xlsx) の両方をサポートしており、幅広いバージョンの Excel ファイルとの互換性を提供します。

特徴

  • .xls と .xlsx 形式の両方をサポート
  • 広範囲の Microsoft Office ファイル形式に対応
  • コミュニティによるサポート

スポンサーリンク

Interop

Microsoft が提供する COM ライブラリで、C# から Excel アプリケーションを直接操作できます。

Excel インスタンスを起動し、実際の Excel アプリケーションと同じように作業を自動化することができます。

Excel がインストールされている環境でのみ動作します。

特徴

  • Excel アプリケーションの直接操作
  • 高度な機能と自動化のサポート
  • Excel がインストールされている環境でのみ利用可能

スポンサーリンク

比較表

比較表

スクロールできます
ライブラリ概要サポートファイル形式利点欠点対象ユーザー備考
EPPlus.NET で Excel ファイルを操作。高度な機能サポート。.xlsx・高速なファイル操作
・チャートや条件付き書式などの高度な機能
・ライセンス: 商用利用に有料プランあり
・商用プランは年間約$395から中級者以上の開発者「直感的」は、APIの使い方が明確で理解しやすいことを指す。
ClosedXMLExcel ファイルの生成や編集を簡単にする。使いやすい API 提供。.xlsx・APIがシンプルで理解しやすい
・スタイル設定やデータ検証などの機能
・数万行を超えるデータではパフォーマンス低下の可能性初心者から中級者の開発者「大量のデータ」は数万行以上のデータセットを指す。
NPOI古い形式と新しい形式の Excel ファイルの両方をサポート。.xls, .xlsx・幅広いバージョンの互換性
・複数の Office ファイル形式対応
・APIが複雑で学習が必要
・ドキュメント不足
幅広い Excel バージョンを扱う開発者「直感的でない」は、APIの理解や利用が複雑であることを指す。
Excel InteropExcel アプリケーションを直接操作する COM ライブラリ。依存なし・Excel の全機能にアクセス可能
・複雑な自動化やマクロの実行が可能
・Excel のインストールが必須
・メモリやCPUリソースを大量に消費
高度な Excel 操作が必要な開発者COM ライブラリは、Windows のコンポーネントオブジェクトモデルの略。Excel アプリケーションとプログラムが通信するための仕組み。

スポンサーリンク

Hello World!

「Hello World!」という文字列を書き込む例です。

EPPlus

EPPlusを使ってExcelファイルに「Hello World!」という文字列を書き込む例です。

using (var package = new ExcelPackage())
{
    var worksheet = package.Workbook.Worksheets.Add("Sheet1");
    worksheet.Cells["A1"].Value = "Hello World!";
    package.SaveAs(new FileInfo("HelloWorld.xlsx"));
}

ClosedXMLの例

ClosedXMLを使って同様にExcelファイルを作成し、「Hello World!」を書き込む例です。

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

NPOIの例

NPOIを使用して、Excelファイルに「Hello World!」という文字列を書き込む例です。

IWorkbook workbook = new XSSFWorkbook(); // .xlsxフォーマット用
ISheet sheet = workbook.CreateSheet("Sample Sheet");
IRow row = sheet.CreateRow(0);
ICell cell = row.CreateCell(0);
cell.SetCellValue("Hello World!");

using (var fileData = new FileStream("HelloWorld.xlsx", FileMode.Create))
{
    workbook.Write(fileData);
}

Excel Interop

Excel Interopを使用してExcelファイルを操作し「Hello World!」という文字列をA1セルに設定する例です。

この方法ではExcelがインストールされている必要があります。

using Excel = Microsoft.Office.Interop.Excel;

var excelApp = new Excel.Application();
excelApp.Visible = true;
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];

Excel.Range a1 = worksheet.Cells[1, 1];
a1.Value2 = "Hello World!";

workbook.SaveAs("HelloWorld.xlsx");
excelApp.Quit();

スポンサーリンク

クリックしてジャンプ