フッターコンテンツにスキップ
他のコンポーネントと比較する

Interop Comparisonを使用してC#でExcelファイルを作成します:ironXLと代替ライブラリ

はじめに

Excelファイルをプログラム的に作成することは、多くのC#アプリケーションにおいて基本的な要件です。 Microsoft.Office.Interop.Excelを使用して C# で Excel ファイルを作成する従来のアプローチは人気がありますが、Microsoft Excel がインストールされている必要があったり、プライマリ インターロップ アセンブリに依存したりするなど、制限があります。 IronXLのような最新のExcelライブラリ代替ツールを使えば、Microsoft Officeを使わずにExcelワークブックを作成したり、複数のワークシートを操作したり、XLSXやCSVファイルを生成したりすることができます。この記事では、さまざまなライブラリがExcelファイル作成をどのように処理するかを比較し、サンプルコードと.NET開発者向けのガイダンスを提供します。

クイック比較の概要

特徴 エクセルの相互運用 IronXL EPPlus クローズドXML NPOI ジェムボックス アスパス
エクセルのインストールが必要 必須 No No いいえ No No No
サーバー展開 非推奨 必須 必須 必須 Yes 必須 必須
プラットフォームサポート Windowsのみ クロスプラットフォーム クロスプラットフォーム クロスプラットフォーム クロスプラットフォーム クロスプラットフォーム クロスプラットフォーム
XLS サポート 必須 必須 No いいえ Yes 必須 必須
XLSXサポート 必須 必須 必須 必須 Yes 必須 必須
学習曲線 簡単 簡単 簡単 適度 簡単 適度
商用ライセンス オフィスライセンス 749ドルから 449ユーロから 無料(MIT) 無料(Apache) 590ユーロから 999ドルから
メモリ効率 不良 優秀 優秀 優秀 不良 優秀 優秀

注意: "Excel Interop"には、プライマリ Interop アセンブリとともに Microsoft Excel がインストールされている必要があります。 IronXLのような代替ライブラリは、Officeを必要とせずにExcelファイル、ワークブック、ワークシートを作成でき、XLSXファイル、CSVファイル、複数のワークシートをサポートします。

なぜExcel Interopを超えるのか?

Microsoft.Office.Interop.Excel の代替は不可欠です。なぜなら、Excel Interop は、アプリケーションを実行するすべてのマシンに Microsoft Excel をインストールする必要があるからです。 特にMicrosoftがOffice自動化に対して明確に警告しているサーバー環境では、この依存関係は展開の課題を引き起こします。 ExcelなしでInteropを使用すると、例外や警告メッセージが発生したり、Excelドキュメントのプログラム作成が失敗したりします。 アプリケーションも、Excelがバックグラウンドプロセスとして実行されるため、COM依存問題、バージョンの競合、パフォーマンスの低下に悩まされます。

IronXLのような最新のExcelライブラリは、これらの問題を解決します。 Office、Excelアプリケーションオブジェクト、またはプライマリ相互運用アセンブリに依存せずにExcelファイルを作成し、ワークシートにデータを書き込み、CSVまたはXMLファイルを生成したり、新しいExcelワークブックを扱うことができます。 開発者は、Visual Studio、Visual Basic、またはコンソールアプリケーションプロジェクトを使用して、Windowsまたはクロスプラットフォーム環境でExcelの自動化を実装できます。

IronXLの無料試用版 を開始して、これらの依存関係を完全に排除しましょう。

InteropでExcelファイルを作成する

まず、Excel Interopを使用した従来のアプローチを見てみましょう。

using Excel = Microsoft.Office.Interop.Excel;
// Create Excel application instance
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
// Add data to cells
worksheet.Cells[1, 1] = "Product";
worksheet.Cells[1, 2] = "Price";
worksheet.Cells[2, 1] = "Widget";
worksheet.Cells[2, 2] = 9.99;
// Save and cleanup
workbook.SaveAs(@"C:\temp\products.xlsx");
workbook.Close();
excelApp.Quit();
// Release COM objects
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
using Excel = Microsoft.Office.Interop.Excel;
// Create Excel application instance
Excel.Application excelApp = new Excel.Application();
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
// Add data to cells
worksheet.Cells[1, 1] = "Product";
worksheet.Cells[1, 2] = "Price";
worksheet.Cells[2, 1] = "Widget";
worksheet.Cells[2, 2] = 9.99;
// Save and cleanup
workbook.SaveAs(@"C:\temp\products.xlsx");
workbook.Close();
excelApp.Quit();
// Release COM objects
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このコードはExcelのインストールが必要で、手動のCOMオブジェクトのクリーンアップが必要で、非Windowsプラットフォームでは機能しません。 複数のワークシートを処理したり、異なるファイル形式で保存したり、サーバー環境で作業する場合、複雑さが増します。 そのため、多くの開発者がMicrosoft Officeを必要としないExcelライブラリを求めています。

IronXLの比較はどのようなものか

IronXLは、Microsoft Officeを使わずにExcelを自動化するための現代的で直感的なAPIにより、これらの複雑さを解消します:

using IronXL;
// Create workbook without Excel
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("Products");
// Add data using familiar syntax
worksheet["A1"].Value = "Product";
worksheet["B1"].Value = "Price";
worksheet["A2"].Value = "Widget";
worksheet["B2"].Value = 9.99;
// Apply formatting
worksheet["A1:B1"].Style.Font.Bold = true;
worksheet["B2"].FormatString = "$#,###";
// Save with one line
workbook.SaveAs("products.xlsx");
using IronXL;
// Create workbook without Excel
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("Products");
// Add data using familiar syntax
worksheet["A1"].Value = "Product";
worksheet["B1"].Value = "Price";
worksheet["A2"].Value = "Widget";
worksheet["B2"].Value = 9.99;
// Apply formatting
worksheet["A1:B1"].Style.Font.Bold = true;
worksheet["B2"].FormatString = "$#,###";
// Save with one line
workbook.SaveAs("products.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

C# で Interop 比較を使って Excel ファイルを作成する:IronXLと代替ライブラリ:画像1 - IronXLの出力

IronXLを使用すると、Excelファイル、新しいワークブック、複数のワークシートをプログラム的に作成できます。 データを記述したり、データを表示したり、Microsoft Excelをインストールしたり、プライマリ相互運用アセンブリを参照したりせずに、XLS、XLSX、CSV、またはXMLファイルを扱うことができます。 これにより、.NET Framework、.NET Core、コンソールアプリケーション、およびクロスプラットフォーム環境に適したフルマネージドのExcelライブラリになります。

IronXLはNuGetパッケージで提供されているため、Microsoft Officeのインストールを気にすることなく、Visual Studioプロジェクトに直接追加することができます。Excelアプリケーション・オブジェクトを管理したり、COMオブジェクトを手動でリリースしたりする必要がないため、例外や警告メッセージが発生するリスクを減らすことができます。 IronXLでExcelファイルを作成する、またはExcelの数式と計算についてはこちらをご覧ください。

今IronXLを始めましょう。
green arrow pointer

他のライブラリはどう比較されるか?

EPPlusの実装

EPPlusはクリーンなAPIを提供しますが、バージョン5以降、ライセンス構成が必要であると、Stack Overflowのスレッドで述べられています。

using OfficeOpenXml;
// Set license context (required from v5+)
ExcelPackage.License.SetNonCommercialPersonal("Test");
using (var package = new ExcelPackage())
{
    var worksheet = package.Workbook.Worksheets.Add("Products");
    worksheet.Cells[1, 1].Value = "Product";
    worksheet.Cells[1, 2].Value = "Price";
    worksheet.Cells[2, 1].Value = "Widget";
    worksheet.Cells[2, 2].Value = 9.99;
    package.SaveAs(new FileInfo("products.xlsx"));
}
using OfficeOpenXml;
// Set license context (required from v5+)
ExcelPackage.License.SetNonCommercialPersonal("Test");
using (var package = new ExcelPackage())
{
    var worksheet = package.Workbook.Worksheets.Add("Products");
    worksheet.Cells[1, 1].Value = "Product";
    worksheet.Cells[1, 2].Value = "Price";
    worksheet.Cells[2, 1].Value = "Widget";
    worksheet.Cells[2, 2].Value = 9.99;
    package.SaveAs(new FileInfo("products.xlsx"));
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

インターロップ比較を使ってC#でExcelファイルを作成する:IronXLと代替ライブラリ:画像2 - EPPlusの出力

EPPlusを使用すると、Excelスプレッドシートを作成したり、データを記述したり表示したり、XLSXファイルやCSVファイルにエクスポートできます。 ただし、古いXLS形式には対応していないため、ビジネスでの使用には商用ライセンスが必要です。 開発者は、.NET Core または .NET Framework でEPPlusを統合し、NuGet パッケージを介して、Visual Studio プロジェクトおよびコンソール アプリケーションに組み込むことができます。

ClosedXMLのアプローチ

ClosedXMLは、直感的なAPIを備えたオープンソースソリューションを提供します。

using ClosedXML.Excel;
using (var workbook = new XLWorkbook())
{
    var worksheet = workbook.Worksheets.Add("Products");
    worksheet.Cell("A1").Value = "Product";
    worksheet.Cell("B1").Value = "Price";
    worksheet.Cell("A2").Value = "Widget";
    worksheet.Cell("B2").Value = 9.99;
    workbook.SaveAs("products.xlsx");
}
using ClosedXML.Excel;
using (var workbook = new XLWorkbook())
{
    var worksheet = workbook.Worksheets.Add("Products");
    worksheet.Cell("A1").Value = "Product";
    worksheet.Cell("B1").Value = "Price";
    worksheet.Cell("A2").Value = "Widget";
    worksheet.Cell("B2").Value = 9.99;
    workbook.SaveAs("products.xlsx");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

インターロップ比較を使ってC#でExcelファイルを作成する:IronXLと代替ライブラリ:画像3 - ClosedXML出力

ClosedXMLは、XLSXファイルとExcelワークシートをサポートし、Microsoft OfficeをインストールせずにExcelシートを簡単に作成します。 複数のワークシートで機能し、CSVとXMLファイルを処理し、.NETプロジェクトにNuGetパッケージを介して統合されます。

NPOIfor Legacy サポート

NPOIは、より複雑なAPIを備えたXLSおよびXLSX形式の両方を処理します。

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
IWorkbook workbook = new XSSFWorkbook();
ISheet worksheet = workbook.CreateSheet("Products");
IRow headerRow = worksheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("Product");
headerRow.CreateCell(1).SetCellValue("Price");
IRow dataRow = worksheet.CreateRow(1);
dataRow.CreateCell(0).SetCellValue("Widget");
dataRow.CreateCell(1).SetCellValue(9.99);
using (FileStream file = new FileStream("products.xlsx", FileMode.Create))
{
    workbook.Write(file);
}
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
IWorkbook workbook = new XSSFWorkbook();
ISheet worksheet = workbook.CreateSheet("Products");
IRow headerRow = worksheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("Product");
headerRow.CreateCell(1).SetCellValue("Price");
IRow dataRow = worksheet.CreateRow(1);
dataRow.CreateCell(0).SetCellValue("Widget");
dataRow.CreateCell(1).SetCellValue(9.99);
using (FileStream file = new FileStream("products.xlsx", FileMode.Create))
{
    workbook.Write(file);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

インターロップ比較を使ってC#でExcelファイルを作成する:IronXLと代替ライブラリ:画像4-NPOI出力</a

NPOIを使用すると、CSV、XLSX、およびXLSファイルを含む複数のファイル形式をサポートし、Excelワークシートとワークブックをプログラム的に作成できます。 ただし、Javaの影響を受けたAPIのため、他のC#Excelライブラリに比べて直感的ではありません。

Key Decision Factors

When to Choose IronXL

IronXL excels for enterprise applications requiring cross-platform Excel library support, comprehensive Excel features, and professional support. Its intuitive API reduces development time when you need to create Excel files without Office installed, while robust performance handles large datasets efficiently. The built-in formula engine and support for multiple formats (XLS, XLSX, CSV, TSV) make it versatile for various business requirements.

Alternative Considerations

EPPlus works well for projects already using version 4.5.3 or earlier (last free version) or those with existingEPPluscommercial licenses.クローズドXMLsuits open-source projects with basic spreadsheet needs and no charting requirements.NPOIremains relevant when XLS support is critical and licensing costs must be minimized.

For comparison with other commercial options: GemBox.Spreadsheet offers similar features toIronXLwith competitive pricing, while Aspose.Cells provides extensive functionality at a premium price point. However, IronXL's combination of features, performance, and support often provides the best value for Excel manipulation .NET projects.

Migration from Interop to IronXL

Migrating fromエクセルの相互運用toIronXLfollows a straightforward pattern. 詳細なガイダンスについては、IronXLドキュメントを参照し、コード例を参照してください:

  1. Remove COM references - Replace Microsoft.Office.Interop.Excel references with IronXL 2.オブジェクトの作成を簡素化 - アプリケーション/ワークブック/ワークシートの階層を、ワークブックの直接作成に置き換えます。 3.セルへのアクセスの更新 - Cells[row,col]からworksheet["A1"]記法への変換 4.クリーンアップ コードの削除 - Marshal.ReleaseComObject<//code> 呼び出しの削除
  2. Test cross-platform - Verify functionality on target deployment platforms

Excelチャート条件付き書式を含む複雑な移行については、IronXLは包括的なサポートを提供します。

Understanding the Limitations

Primary Interop Assemblies(PIA)は、Excelがインストールされていないと機能しないことに注意することが重要です。 This misconception often leads to deployment failures when moving applications to servers or attempting Excel automation without Office installation.

Regarding security,IronXLundergoes regular security audits and maintains DigiCert certification, providing enterprise-grade protection without the vulnerabilities associated with COM interfaces. セキュリティの詳細については、IronXLセキュリティドキュメントをご覧ください。

結論

Whileエクセルの相互運用served its purpose in desktop applications, modern development demands more flexible alternatives to the Excel library.IronXLprovides the most comprehensive alternative for creating Excel files without Interop, combining ease of use with enterprise features and cross-platform Excel support.

Whether you're building cloud applications, working with Docker containers, or developing cross-platform solutions, selecting a library that doesn't require Excel installation is crucial for creating scalable and maintainable applications. IronXLをダウンロードして、エクセルの自動化ワークフローを今すぐ変革しましょう。

今日あなたのプロジェクトでIronXLを無料トライアルで使用開始。

最初のステップ:
green arrow pointer

BRACKET-i-OPEN--EPPlus、ClosedXML、NPOI、GemBox、およびAsposeは、各所有者の登録商標です。 このサイトは、EPPlus、ClosedXML、NPOI、GemBox、またはAsposeと提携、承認、または後援していません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。

よくある質問

Excel Interopとは何ですか?

Excel Interopは、C#アプリケーション内でExcelファイルを操作するために使用されるMicrosoftライブラリです。パフォーマンスを向上させたり、デプロイを容易にしたり、Microsoft Officeのインストールに依存しないようにするために、代替ライブラリが必要になる場合があります。

IronXLはExcel Interopと比較してどうですか?

IronXLはExcel Interopに代わる、より軽量で高速なツールを提供し、導入が容易でMicrosoft Officeのインストールも不要です。C#から直接Excelファイルを作成、読み込み、編集するなど、幅広い機能をサポートしています。

IronXL.Excel Interopと比較して、IronXLのライセンスオプションは何ですか?

IronXLはさまざまな規模のプロジェクトに適した柔軟なライセンスオプションを提供しますが、Excel InteropはMicrosoft Officeのライセンスに縛られており、すべてのアプリケーションの展開に適しているとは限りません。

IronXLはMicrosoft Officeがインストールされていなくても動作しますか?

IronXLはサーバーやクライアントマシンにMicrosoft Officeをインストールする必要がないため、サーバーサイドやクラウドアプリケーションに最適です。

IronXLはExcelファイルを他の形式にエクスポートできますか?

IronXLはExcelファイルをCSV、TSV、JSONなどの形式にエクスポートすることができます。

IronXLで大きなExcelファイルを読み、編集することは可能ですか?

IronXLは大きなExcelファイルを効率的に処理するように最適化されており、高速な処理時間と高いパフォーマンスを提供します。

IronXLを使用するためのコーディング例を教えてください。

IronXLは、C#を使用したExcelファイルの作成、読み込み、編集など、さまざまな使用例について豊富なドキュメントとコード例を提供しています。

IronXL.Excel Interopにはない特別な機能はありますか?

IronXLは、テンプレートベースのファイル生成、高度なスタイリング、OfficeのインストールなしでExcelファイルを扱う機能など、Excel Interopでは利用できない機能を提供します。

既存のC#プロジェクトにIronXLを統合するのは簡単ですか?

IronXLは、わかりやすいAPIと包括的なサポートにより、既存のC#プロジェクトに簡単に統合できるように設計されており、Excelファイルの管理に必要なコードの複雑さを軽減します。

IronXLを使用する開発者にはどのようなサポートがありますか?

IronXLは専任のテクニカルサポート、詳細なドキュメント、コミュニティフォーラムを提供し、開発者が遭遇した問題を迅速に解決できるよう支援します。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。