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

IronXLとEPPlusの比較

IronXLとEPPlusはどちらも.NET Excelライブラリで、Microsoft OfficeやInteropを必要とせずに、.xlsxファイルを読み書きできます。この比較では、API、サポートされているフォーマット、ライセンスについて、 .NETアプリケーションで最も一般的に使用される操作のコード例を交えて解説します。

EPPlusソフトウェアとは?

EPPlusは、Office Open XMLスプレッドシートを扱うためのNuGetベース for .NET Framework/.NET Coreライブラリです。 バージョン5には、.NET Framework 3.5と.NET Core 2.0のサポートが含まれています。EPPlusは、Microsoft Excelなどの他のライブラリに依存することはありません。

EPPlusには、Office Excelドキュメントを操作するためのAPIが備わっています。 EPPlusは.NETライブラリで、Office OpenXML形式のExcelファイルを読み書きします。 このライブラリはNuGetからパッケージとして利用可能です。

このライブラリはプログラマーを念頭に置いて作成されました。 Excelまたは他のスプレッドシートライブラリに精通している開発者が、迅速にAPIを学べるようにすることが常に目標でした。 また、誰かが言ったように"IntelliSenseで勝利を掴み取る!"

EPPlusのインストール

Visual StudioからEPPlusをインストールするには、[表示] > [その他のウィンドウ] > [パッケージマネージャーコンソール]に移動し、次のコマンドを入力します:

Install-Package EPPlus

.NET CLIを利用したい場合は、昇格したコマンドプロンプトまたはPowerShellプロンプトから以下のコマンドを実行してください:

dotnet add package EPPlus

EPPlusはプロジェクトに追加できるdotnetパッケージです。

IronXLとは?

IronXLは、C#およびVBで記述されたExcel APIであり、Microsoft Officeをインストールしたり、Excel Interopに頼ったりすることなく、 .NET環境でExcelスプレッドシートファイルの読み取り、編集、作成を可能にします。このライブラリは、XLS、XLSX、CSVなどのスプレッドシート形式をネイティブに処理します。

.NET Core、.NET Framework、Xamarin、モバイル、Linux、macOS、およびAzureはすべてIronXLによってサポートされています。

あなたのスプレッドシートにデータを読み書きするための様々な方法があります。

NuGetパッケージを使用してIronXLを追加する

あなたのアカウントにIronXLパッケージを追加するための3つの方法の1つを選択できますので、あなたに最適な方法を選んでください。

  • パッケージマネージャーコンソールを使用してIronXLをインストールする

プロジェクトのパッケージマネージャーコンソールを開くために次のコマンドを使用します:

パッケージマネージャーコンソールにアクセスするには、ツール => NuGetパッケージマネージャー => パッケージマネージャーコンソールに移動します。

Epplus Read Create Excel Alternative 1 related to NuGetパッケージを使用してIronXLを追加する

これでパッケージマネージャーコンソールに移動します。 次に、パッケージマネージャー端末で以下のコマンドを入力します:

Install-Package IronXL.Excel
Epplus Read Create Excel Alternative 2 related to NuGetパッケージを使用してIronXLを追加する
  • NuGetパッケージマネージャーを使用してIronXLをインストールする

これはNuGetパッケージマネージャーをインストールするための別の方法です。 前の方法でインストールが完了している場合は、この方法を使用する必要はありません。

NuGetパッケージマネージャーにアクセスするには、ツール > NuGetパッケージマネージャー => ソリューションのNuGetパッケージを管理をドロップダウンメニューから選択します。

これでNuGetソリューションが起動します; "参照"を選択し、IronXLを検索します。

検索バーにExcelを入力します:

Epplus Read Create Excel Alternative 3 related to NuGetパッケージを使用してIronXLを追加する

"インストール"ボタンをクリックするとIronXLがインストールされます。 IronXLをインストールした後、フォームに移動して開発を開始できます。

コード例に入る前に、この記事で取り上げる主要な分野におけるEPPlusとIronXLの比較を、並べて概観してみましょう。

フィーチャー EPPlus IronXL
XLSXファイルを読み込む はい はい
XLSXファイルを作成する はい はい
XLS形式に対応 なし はい
CSV、JSON、XML形式でエクスポート CSVのみ CSV、JSON、XML
データベースのエクスポート(Entity Framework) 含まれていません はい
データ検証ヘルパー 含まれていません はい
複数ワークブック操作 単一ワークシートに焦点を当てる 複数ワークシートおよび複数ワークブック
ライセンス 商用またはPolyform非商用 商用(永久)

IronXLのExcel操作をEPPlusと比較して、ご自身のプロジェクトでテストするには、 30日間の無料トライアルをご利用いただけます。

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

IronXLで新しいExcelワークブックを作成するには、たった1行のコードで済みます。

// Create a new Excel workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Create a new Excel workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
$vbLabelText   $csharpLabel

IronXLは、 Excelのあらゆる機能を活用し、XLS(以前のExcelファイルバージョン)とXLSX(現在の新しいExcelファイルバージョン)形式のファイルを作成できます。

  • デフォルトのワークシートの設定

デフォルトのワークシートをセットアップするのはさらに簡単です:

// Create a worksheet named "2020 Budget" in the workbook
var sheet = workbook.CreateWorkSheet("2020 Budget");
// Create a worksheet named "2020 Budget" in the workbook
var sheet = workbook.CreateWorkSheet("2020 Budget");
$vbLabelText   $csharpLabel

上記のコードスニペットでは、ワークシートは sheet で表され、これを使用してセルの値やスタイルを設定したり、Excel でできるほぼすべての操作を実行したりできます。 Excelドキュメントを読み取り専用ファイルにコーディングし、削除操作を行うこともできます。 Excelと同様に、ワークシートをリンクすることもできます。

もしあなたがワークブックとワークシートの違いをよく知らない場合、私が明確にします。

ワークシートはワークブックに含まれています。 これは、ワークブックの中に好きなだけ多くのワークシートを置くことができることを意味します。 これをどのように行うかは後の記事で説明します。 ワークシートは行と列で構成されています。 行と列の交差部分をセルと呼び、これがExcelでやり取りするものです。

EPPlusSoftware ABを使用してExcelファイルを作成する

EPPlusを使用してExcelファイルを作成し、ピボットテーブル、ピボット領域の作成、条件付き書式設定、フォントの変更などの操作を実行できます。 それでは早速、通常の DataTable を XLSX Excel ファイルに変換し、ユーザーにダウンロード用に送信するソースコード全体をご紹介します。

public ActionResult ConvertToXLSX()
{
    byte[] fileData = null;

    // Replace the GetDataTable() method with your DBMS-fetching code.
    using (DataTable dt = GetDataTable())
    {
        // Create an empty spreadsheet
        using (var p = new ExcelPackage())
        {
            // Add a worksheet to the spreadsheet
            ExcelWorksheet ws = p.Workbook.Worksheets.Add(dt.TableName);

            // Initialize rows and columns counter: note that they are 1-based!
            var row = 1;
            var col = 1;

            // Create the column names on the first line.
            // In this sample, we'll just use the DataTable column names
            row = 1;
            col = 0;
            foreach (DataColumn dc in dt.Columns)
            {
                col++;
                ws.SetValue(row, col, dc.ColumnName);
            }

            // Insert the DataTable rows into the XLS file
            foreach (DataRow r in dt.Rows)
            {
                row++;
                col = 0;
                foreach (DataColumn dc in dt.Columns)
                {
                    col++;
                    ws.SetValue(row, col, r[dc].ToString());
                }

                // Alternate light-gray color for uneven rows (3, 5, 7, 9)...
                if (row % 2 != 0)
                {
                    ws.Row(row).Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                    ws.Row(row).Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightGray);
                }
            }

            // Output the XLSX file
            using (var ms = new MemoryStream())
            {
                p.SaveAs(ms);
                ms.Seek(0, SeekOrigin.Begin);
                fileData = ms.ToArray();
            }
        }
    }

    string fileName = "ConvertedFile.xlsx";
    string contentType = System.Web.MimeMapping.GetMimeMapping(fileName);
    Response.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", fileName));
    return File(fileData, contentType);
}
public ActionResult ConvertToXLSX()
{
    byte[] fileData = null;

    // Replace the GetDataTable() method with your DBMS-fetching code.
    using (DataTable dt = GetDataTable())
    {
        // Create an empty spreadsheet
        using (var p = new ExcelPackage())
        {
            // Add a worksheet to the spreadsheet
            ExcelWorksheet ws = p.Workbook.Worksheets.Add(dt.TableName);

            // Initialize rows and columns counter: note that they are 1-based!
            var row = 1;
            var col = 1;

            // Create the column names on the first line.
            // In this sample, we'll just use the DataTable column names
            row = 1;
            col = 0;
            foreach (DataColumn dc in dt.Columns)
            {
                col++;
                ws.SetValue(row, col, dc.ColumnName);
            }

            // Insert the DataTable rows into the XLS file
            foreach (DataRow r in dt.Rows)
            {
                row++;
                col = 0;
                foreach (DataColumn dc in dt.Columns)
                {
                    col++;
                    ws.SetValue(row, col, r[dc].ToString());
                }

                // Alternate light-gray color for uneven rows (3, 5, 7, 9)...
                if (row % 2 != 0)
                {
                    ws.Row(row).Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                    ws.Row(row).Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightGray);
                }
            }

            // Output the XLSX file
            using (var ms = new MemoryStream())
            {
                p.SaveAs(ms);
                ms.Seek(0, SeekOrigin.Begin);
                fileData = ms.ToArray();
            }
        }
    }

    string fileName = "ConvertedFile.xlsx";
    string contentType = System.Web.MimeMapping.GetMimeMapping(fileName);
    Response.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", fileName));
    return File(fileData, contentType);
}
$vbLabelText   $csharpLabel

ご覧のとおり、これは任意のASP.NET MVC コントローラーで使用できるメソッドです。 もしASP.NET MVCを使用していない場合は、メソッドの内容をコピーして必要な場所に貼り付けてください(例:古典的なASP.NET、コンソールアプリケーション、Windowsフォームなど)。

コードは自己説明的であり、さまざまな処理プロセスを理解するのに役立つコメントが十分にあります。 しかしまず、ここで何をしているのかの簡単な要約:

  • カスタムデータプロバイダーメソッドを使用すると、DataTable オブジェクトが取得されます。 -EPPlusの XLSX ファイルの主要なコンテナである ExcelPackage オブジェクトを作成します。
  • ExcelPackageExcelWorksheet を追加します。これはデータが入力されるワークシートになります。
  • ヘッダー行を作成するには、DataTable 列を繰り返し処理し、ワークシートの最初の行に追加します。
  • DataTable 行を反復処理し、各行をワークシートの行に 1 行ずつ追加します (2 行目から開始)。これにより、各 DataTable 行がワークシートの行に対応します。
  • DataTable から ExcelPackage への変換が完了したら、ExcelPackage バイナリデータを格納するための MemoryStream を作成し、それをバイト配列に変換します。
  • HTML応答を作成し、Content-Disposition添付ファイルを使用してXLSXファイルをユーザーに送信します。これによりブラウザは自動的にファイルをダウンロードします。

IronXL のワークブック作成方法は、コードが 1 行で済むのに対し、EPPlus では ExcelWorksheet、手動でのセル反復など、複数のステップが必要です。 迅速なプロトタイピングとシンプルなデバッグを優先するチームにとって、こうした定型コードの違いは、プロジェクトのライフサイクル全体を通して積み重なると大きな影響を与える可能性がある。

EPPlusSoftware ABがExcelファイルを書き込む方法

EPPlusはExcelファイルの取り扱いをサポートしています。 これはExcelファイルを読み書きする.netライブラリです。

  • Excelファイルを読む

そのためには、まずパッケージEPPlusをインストールする必要があります:"ツール"-> "NuGetパッケージマネージャー"-> "このソリューションのNuGetを管理" -> "EPPlusをインストール"。 "参照"タブで"EPPlus"を検索し、NuGetパッケージをインストールします。

Epplus Read Create Excel Alternative 4 related to EPPlusSoftware ABがExcelファイルを書き込む方法

あなたがパッケージをインストールした後、コンソールアプリケーション"Program.cs"で以下のコードを使用できます。

using OfficeOpenXml;
using System;
using System.IO;

namespace ReadExcelInCsharp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Provide file path
            FileInfo existingFile = new FileInfo(@"D:\sample_XLSX.xlsx");
            // Use EPPlus
            using (ExcelPackage package = new ExcelPackage(existingFile))
            {
                // Get the first worksheet in the workbook
                ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
                int colCount = worksheet.Dimension.End.Column;  // Get Column Count
                int rowCount = worksheet.Dimension.End.Row;     // Get row count
                for (int row = 1; row <= rowCount; row++)
                {
                    for (int col = 1; col <= colCount; col++)
                    {
                        // Print data, based on row and columns position
                        Console.WriteLine("Row:" + row + " Column:" + col + " Value:" + worksheet.Cells[row, col].Value?.ToString().Trim());
                    }
                }
            }
        }
    }
}
using OfficeOpenXml;
using System;
using System.IO;

namespace ReadExcelInCsharp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Provide file path
            FileInfo existingFile = new FileInfo(@"D:\sample_XLSX.xlsx");
            // Use EPPlus
            using (ExcelPackage package = new ExcelPackage(existingFile))
            {
                // Get the first worksheet in the workbook
                ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
                int colCount = worksheet.Dimension.End.Column;  // Get Column Count
                int rowCount = worksheet.Dimension.End.Row;     // Get row count
                for (int row = 1; row <= rowCount; row++)
                {
                    for (int col = 1; col <= colCount; col++)
                    {
                        // Print data, based on row and columns position
                        Console.WriteLine("Row:" + row + " Column:" + col + " Value:" + worksheet.Cells[row, col].Value?.ToString().Trim());
                    }
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

以下は、EPPlusを使用してC#で作業している例のコンソールアプリケーション出力です。 EPPlusを使用してC#で読み込むためのxlsxファイルはこちらです。

Epplus Read Create Excel Alternative 5 related to EPPlusSoftware ABがExcelファイルを書き込む方法

複数のソースからデータをロードするための以下の方法に、"cells"プロパティ(ExcelRange)を使用してアクセスできます。

  • CSV テキストファイルを読み込みLoadFromTextLoadFromTextAsync を含むワークシートの範囲にデータをロードします。 IronXLは独自のCSVエクスポートおよびインポート機能も提供しています。
  • LoadFromDataReaderAsyncおよび LoadFromDataReader — DataReader からデータ フィールドを範囲にロードします。
  • LoadFromDataTableDataTable からデータを範囲にロードします。 XML(例が提供されています)やデータベースを含むさまざまなソースからデータをインポートできます。
  • LoadFromCollectionIEnumerable から範囲にデータをリフレクションでロードします。
  • LoadFromCollection with attributesIEnumerable から範囲またはテーブルにデータをリフレクションでロードします。 スタイル、数値フォーマット、数式、その他のプロパティは属性によって指定されます。
  • LoadFromDictionariesIEnumerable /dynamic オブジェクト (それらのインターフェースを介して) からデータを範囲にロードします。 JSONデータをインポートするのに便利であり、例が含まれています。
  • LoadFromArrays — オブジェクト IEnumerable からデータを範囲に読み込みます。各オブジェクト配列はワークシートの行に対応します。

これらの方法を使用する場合、オプションでExcelテーブルを生成するパラメーターを指定することができます。 サンプルプロジェクト Sample-.NET Framework または Sample-.NET Framework のサンプル 4 と 5 には、より詳細な例が含まれています。

  • Excelファイルを書く

次に、新しいExcelファイルにデータをエクスポートできるかどうかを見てみましょう。

Excelドキュメントとして保存したいサンプルデータ/オブジェクトはこちらです。

List<UserDetails> persons = new List<UserDetails>()
{
    new UserDetails() {ID="9999", Name="ABCD", City ="City1", Country="USA"},
    new UserDetails() {ID="8888", Name="PQRS", City ="City2", Country="INDIA"},
    new UserDetails() {ID="7777", Name="XYZZ", City ="City3", Country="CHINA"},
    new UserDetails() {ID="6666", Name="LMNO", City ="City4", Country="UK"},
};
List<UserDetails> persons = new List<UserDetails>()
{
    new UserDetails() {ID="9999", Name="ABCD", City ="City1", Country="USA"},
    new UserDetails() {ID="8888", Name="PQRS", City ="City2", Country="INDIA"},
    new UserDetails() {ID="7777", Name="XYZZ", City ="City3", Country="CHINA"},
    new UserDetails() {ID="6666", Name="LMNO", City ="City4", Country="UK"},
};
$vbLabelText   $csharpLabel

必要な情報を含む新しい Excel ファイルを作成するには、ExcelPackage クラスを使用する必要があります。 ファイルにデータを書き込み、新しいExcelスプレッドシートを生成するには、ほんの数行のコードが必要です。 以下の1行に注目してください。この1行が、DataTables をExcelシートに読み込むという魔法のような処理を実行します。

Epplus Read Create Excel Alternative 6 related to EPPlusSoftware ABがExcelファイルを書き込む方法

物事をシンプルに保つために、同じプロジェクトフォルダ内に新しいスプレッドシートファイルを生成します(Excelファイルはプロジェクトの 'bin' フォルダに作成されます)。 ソースコードは以下です:

private static void WriteToExcel(string path)
{
    // Let use below test data for writing it to excel
    List<UserDetails> persons = new List<UserDetails>()
    {
        new UserDetails() {ID="9999", Name="ABCD", City ="City1", Country="USA"},
        new UserDetails() {ID="8888", Name="PQRS", City ="City2", Country="INDIA"},
        new UserDetails() {ID="7777", Name="XYZZ", City ="City3", Country="CHINA"},
        new UserDetails() {ID="6666", Name="LMNO", City ="City4", Country="UK"},
    };

    // Let's convert our object data to Datatable for a simplified logic.
    // Datatable is the easiest way to deal with complex datatypes for easy reading and formatting. 
    DataTable table = (DataTable)JsonConvert.DeserializeObject(JsonConvert.SerializeObject(persons), (typeof(DataTable)));
    FileInfo filePath = new FileInfo(path);
    using (var excelPack = new ExcelPackage(filePath))
    {
        var ws = excelPack.Workbook.Worksheets.Add("WriteTest");
        ws.Cells.LoadFromDataTable(table, true, OfficeOpenXml.Table.TableStyles.Light8);
        excelPack.Save();
    }
}
private static void WriteToExcel(string path)
{
    // Let use below test data for writing it to excel
    List<UserDetails> persons = new List<UserDetails>()
    {
        new UserDetails() {ID="9999", Name="ABCD", City ="City1", Country="USA"},
        new UserDetails() {ID="8888", Name="PQRS", City ="City2", Country="INDIA"},
        new UserDetails() {ID="7777", Name="XYZZ", City ="City3", Country="CHINA"},
        new UserDetails() {ID="6666", Name="LMNO", City ="City4", Country="UK"},
    };

    // Let's convert our object data to Datatable for a simplified logic.
    // Datatable is the easiest way to deal with complex datatypes for easy reading and formatting. 
    DataTable table = (DataTable)JsonConvert.DeserializeObject(JsonConvert.SerializeObject(persons), (typeof(DataTable)));
    FileInfo filePath = new FileInfo(path);
    using (var excelPack = new ExcelPackage(filePath))
    {
        var ws = excelPack.Workbook.Worksheets.Add("WriteTest");
        ws.Cells.LoadFromDataTable(table, true, OfficeOpenXml.Table.TableStyles.Light8);
        excelPack.Save();
    }
}
$vbLabelText   $csharpLabel

上記のAPIコールでのデータ妥当性検証に続いて、上記のカスタムオブジェクトが適切なExcel列と行に変換され、新しいExcelファイルが生成されます。

Epplus Read Create Excel Alternative 7 related to EPPlusSoftware ABがExcelファイルを書き込む方法

上記の即使用可能なAPIは.NET Coreコンソール、テストプロジェクト、またはASP.NET Coreアプリケーションで使用でき、ニーズに合わせてロジックを変更できます。

これらの技術には"cells"プロパティ(ExcelRange)を使用してアクセスできます:

  • ToTextとToTextAsync — 範囲からCSV文字列を作成します。
  • SaveToTextSaveToTextAsync を含む範囲を CSV ファイルに書き込みます
  • データを範囲からシステムにエクスポートするToDataTableメソッドを使用します。 DataTable
  • GetValue — データ型のオプションで値を表示します。
  • Value — 範囲の値を返したり設定したりします。

GetValue および SetValue メソッドは、ワークシート オブジェクトに対して直接使用することもできます。 (これは範囲での読み書きより若干良い結果を提供します):

  • GetValue — データ型を指定して単一のセルの値を取得します。
  • SetValue — 単一のセルの値を変更します。

セルプロパティが IEnumerable インターフェイスを実装しているため、Linq を使用してワークシートからデータをクエリできます。

IronXLを使用してOffice Open XML形式XLSXを開いて書き込む

IronXLはC#の開発者がExcelやピボットテーブル、その他のスプレッドシートファイルを迅速かつ簡単に取り扱うため for .NETライブラリです。

Office Interopは必要ありません。 特に依存関係や、CoreやAzure上にMicrosoft Officeをインストールする必要はありません。

IronXLは.NET coreおよび.NETフレームワーク用の著名なC#およびVB.NET xlスプレッドシートライブラリです。

  • Excelファイルを読む
  • 読み込むワークシート

Excel シートは、WorkBook クラスで表されます。 C# でピボットテーブルを含む Excel ファイルを読み込むために、WorkBook を使用します。 Excelファイルを読み込み、その場所を選択します(.xlsx)。

/**
 Load WorkBook
 **/
var workbook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");
/**
 Load WorkBook
 **/
var workbook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");
$vbLabelText   $csharpLabel

WorkSheetオブジェクトは多数のWorkBooksにあります。 これらはExcelドキュメントのワークシートです。 シートにワークシートが含まれている場合は、WorkBook という名前を使用して、GetWorkSheet で検索します。

var worksheet = workbook.GetWorkSheet("GDPByCountry");
var worksheet = workbook.GetWorkSheet("GDPByCountry");
$vbLabelText   $csharpLabel
  • 自分のワークブックを作成する

シートタイプを使用して新しい WorkBook を構築し、メモリ内に新しい WorkBook を生成します。

/**
 Create WorkBook
 **/
var workbook = new WorkBook(ExcelFileFormat.XLSX);
/**
 Create WorkBook
 **/
var workbook = new WorkBook(ExcelFileFormat.XLSX);
$vbLabelText   $csharpLabel

古いバージョンの Microsoft Excel スプレッドシートの場合は、ExcelFileFormat.XLS (95 以前) を使用してください。

ワークシートを自分で作成する

各"ワークブック"には多数の"ワークシート"が含まれます。"ワークシート"は単一のデータシートで、"ワークブック"はワークシートのコレクションです。 Excelでは、これが2つのワークシートを持つ1つのワークブックの見え方です。

Epplus Read Create Excel Alternative 8 related to IronXLを使用してOffice Open XML形式XLSXを開いて書き込む

WorkBook は、構築できる新しい WorkSheet の名前です。

var worksheet = workbook.CreateWorkSheet("Countries");
var worksheet = workbook.CreateWorkSheet("Countries");
$vbLabelText   $csharpLabel

ワークシート名を CreateWorkSheet に渡します。

セルの範囲を取得する

"Cell"オブジェクトの2次元コレクションは"Range"クラスで表されます。 それは特定のExcelセルの範囲を示します。 WorkSheetオブジェクトでの文字列インデクサを使用して範囲を取得できます。

var range = worksheet["D2:D101"];
var range = worksheet["D2:D101"];
$vbLabelText   $csharpLabel

引数テキストはセルの座標(例:"A1")やセルの範囲(例:"B2:E5")として指定されます。 GetRange はワークシートからも呼び出すことができます。

  • 範囲内のセルの値を編集する

範囲内のセルの値を読み取ったり編集したりするさまざまな方法があります。 数がわかっている場合はForループを使用します。 ここからセルのスタイリングも行えます。

/**
 Edit Cell Values in Range
 **/
 // Iterate through the rows
for (var y = 2; y <= 101; y++)
{
    var result = new PersonValidationResult { Row = y };
    results.Add(result);

    // Get all cells for the person
    var cells = worksheet[$"A{y}:E{y}"].ToList();

    // Validate the phone number (1 = B)
    var phoneNumber = cells[1].Value;
    result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, (string)phoneNumber);

    // Validate the email address (3 = D)
    result.EmailErrorMessage = ValidateEmailAddress((string)cells[3].Value);

    // Get the raw date in the format of Month Day [suffix], Year (4 = E)
    var rawDate = (string) cells[4].Value;
    result.DateErrorMessage = ValidateDate(rawDate);
}
/**
 Edit Cell Values in Range
 **/
 // Iterate through the rows
for (var y = 2; y <= 101; y++)
{
    var result = new PersonValidationResult { Row = y };
    results.Add(result);

    // Get all cells for the person
    var cells = worksheet[$"A{y}:E{y}"].ToList();

    // Validate the phone number (1 = B)
    var phoneNumber = cells[1].Value;
    result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, (string)phoneNumber);

    // Validate the email address (3 = D)
    result.EmailErrorMessage = ValidateEmailAddress((string)cells[3].Value);

    // Get the raw date in the format of Month Day [suffix], Year (4 = E)
    var rawDate = (string) cells[4].Value;
    result.DateErrorMessage = ValidateDate(rawDate);
}
$vbLabelText   $csharpLabel

スプレッドシートのデータをバリデートする

IronXLを使用してデータシートをバリデートします。 DataValidationサンプルは、libphonenumber-CSharpを使用して電話番号を、標準的なC# APIを使用してメールアドレスや日付をバリデートします。

/**
 Validate Spreadsheet Data
 **/
 // Iterate through the rows
for (var i = 2; i <= 101; i++)
{
    var result = new PersonValidationResult { Row = i };
    results.Add(result);

    // Get all cells for the person
    var cells = worksheet[$"A{i}:E{i}"].ToList();

    // Validate the phone number (1 = B)
    var phoneNumber = cells[1].Value;
    result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, (string)phoneNumber);

    // Validate the email address (3 = D)
    result.EmailErrorMessage = ValidateEmailAddress((string)cells[3].Value);

    // Get the raw date in the format of Month Day [suffix], Year (4 = E)
    var rawDate = (string)cells[4].Value;
    result.DateErrorMessage = ValidateDate(rawDate);
}
/**
 Validate Spreadsheet Data
 **/
 // Iterate through the rows
for (var i = 2; i <= 101; i++)
{
    var result = new PersonValidationResult { Row = i };
    results.Add(result);

    // Get all cells for the person
    var cells = worksheet[$"A{i}:E{i}"].ToList();

    // Validate the phone number (1 = B)
    var phoneNumber = cells[1].Value;
    result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, (string)phoneNumber);

    // Validate the email address (3 = D)
    result.EmailErrorMessage = ValidateEmailAddress((string)cells[3].Value);

    // Get the raw date in the format of Month Day [suffix], Year (4 = E)
    var rawDate = (string)cells[4].Value;
    result.DateErrorMessage = ValidateDate(rawDate);
}
$vbLabelText   $csharpLabel

上記のコードはスプレッドシートの行を繰り返し処理し、セルをリストとして取得します。各バリデートメソッドはセルの値を確認し、値が不正な場合にエラーを返します。

このコードは新しいシートを作成し、ヘッダーを指定し、不正なデータログを保持できるようにエラーメッセージの結果を生成します。

var resultsSheet = workbook.CreateWorkSheet("Results");

resultsSheet["A1"].Value = "Row";
resultsSheet["B1"].Value = "Valid";
resultsSheet["C1"].Value = "Phone Error";
resultsSheet["D1"].Value = "Email Error";
resultsSheet["E1"].Value = "Date Error";

for (var i = 0; i < results.Count; i++)
{
    var result = results[i];
    resultsSheet[$"A{i + 2}"].Value = result.Row;
    resultsSheet[$"B{i + 2}"].Value = result.IsValid ? "Yes" : "No";
    resultsSheet[$"C{i + 2}"].Value = result.PhoneNumberErrorMessage;
    resultsSheet[$"D{i + 2}"].Value = result.EmailErrorMessage;
    resultsSheet[$"E{i + 2}"].Value = result.DateErrorMessage;
}

workbook.SaveAs(@"Spreadsheets\\PeopleValidated.xlsx");
var resultsSheet = workbook.CreateWorkSheet("Results");

resultsSheet["A1"].Value = "Row";
resultsSheet["B1"].Value = "Valid";
resultsSheet["C1"].Value = "Phone Error";
resultsSheet["D1"].Value = "Email Error";
resultsSheet["E1"].Value = "Date Error";

for (var i = 0; i < results.Count; i++)
{
    var result = results[i];
    resultsSheet[$"A{i + 2}"].Value = result.Row;
    resultsSheet[$"B{i + 2}"].Value = result.IsValid ? "Yes" : "No";
    resultsSheet[$"C{i + 2}"].Value = result.PhoneNumberErrorMessage;
    resultsSheet[$"D{i + 2}"].Value = result.EmailErrorMessage;
    resultsSheet[$"E{i + 2}"].Value = result.DateErrorMessage;
}

workbook.SaveAs(@"Spreadsheets\\PeopleValidated.xlsx");
$vbLabelText   $csharpLabel

Entity Frameworkを使用してデータをエクスポートする

IronXLを使用してExcelスプレッドシートをデータベースに変換したり、データをデータベースにエクスポートしたりします。 ExcelToDB サンプルは、国別の GDP を含むスプレッドシートを読み込み、SQLite にエクスポートします。

EntityFrameworkを用いてデータベースを作成し、その後データを行ごとにエクスポートします。

SQLite Entity Framework NuGetパッケージをインストールする必要があります。

Epplus Read Create Excel Alternative 9 related to IronXLを使用してOffice Open XML形式XLSXを開いて書き込む

EntityFrameworkを使用してデータベースにデータをエクスポートできるモデルオブジェクトを構築できます。

public class Country
{
    [Key]
    public Guid Key { get; set; }
    public string Name { get; set; }
    public decimal GDP { get; set; }
}
public class Country
{
    [Key]
    public Guid Key { get; set; }
    public string Name { get; set; }
    public decimal GDP { get; set; }
}
$vbLabelText   $csharpLabel

別のデータベースを使用するには、適切なNuGetパッケージをインストールし、UseSqLite に相当するもの(UseSqlServer など)を探してください。

/**
 Export Data using Entity Framework
 **/
public class CountryContext : DbContext
{
    public DbSet<Country> Countries { get; set; }

    public CountryContext()
    {
        // TODO: Make async
        Database.EnsureCreated();
    }

    /// <summary>
    /// Configure context to use Sqlite
    /// </summary>
    /// <param name="optionsBuilder"></param>
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        var connection = new SqliteConnection($"Data Source=Country.db");
        connection.Open();

        var command = connection.CreateCommand();

        // Create the database if it doesn't already exist
        command.CommandText = $"PRAGMA foreign_keys = ON;";
        command.ExecuteNonQuery();

        optionsBuilder.UseSqlite(connection);

        base.OnConfiguring(optionsBuilder);
    }
}
/**
 Export Data using Entity Framework
 **/
public class CountryContext : DbContext
{
    public DbSet<Country> Countries { get; set; }

    public CountryContext()
    {
        // TODO: Make async
        Database.EnsureCreated();
    }

    /// <summary>
    /// Configure context to use Sqlite
    /// </summary>
    /// <param name="optionsBuilder"></param>
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        var connection = new SqliteConnection($"Data Source=Country.db");
        connection.Open();

        var command = connection.CreateCommand();

        // Create the database if it doesn't already exist
        command.CommandText = $"PRAGMA foreign_keys = ON;";
        command.ExecuteNonQuery();

        optionsBuilder.UseSqlite(connection);

        base.OnConfiguring(optionsBuilder);
    }
}
$vbLabelText   $csharpLabel

CountryContext を生成し、範囲を反復処理して各エントリを作成してから、SaveChangesAsync を使用してデータをデータベースに保存します。

public async Task ProcessAsync()
{
    // Get the first worksheet
    var workbook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");
    var worksheet = workbook.GetWorkSheet("GDPByCountry");

    // Create the database connection
    using (var countryContext = new CountryContext())
    {
        // Iterate through all the cells
        for (var i = 2; i <= 213; i++)
        {
            // Get the range from A-B
            var range = worksheet[$"A{i}:B{i}"].ToList();

            // Create a Country entity to be saved to the database
            var country = new Country
            {
                Name = (string)range[0].Value,
                GDP = (decimal)(double)range[1].Value
            };

            // Add the entity
            await countryContext.Countries.AddAsync(country);
        }

        // Commit changes to the database
        await countryContext.SaveChangesAsync();
    }
}
public async Task ProcessAsync()
{
    // Get the first worksheet
    var workbook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");
    var worksheet = workbook.GetWorkSheet("GDPByCountry");

    // Create the database connection
    using (var countryContext = new CountryContext())
    {
        // Iterate through all the cells
        for (var i = 2; i <= 213; i++)
        {
            // Get the range from A-B
            var range = worksheet[$"A{i}:B{i}"].ToList();

            // Create a Country entity to be saved to the database
            var country = new Country
            {
                Name = (string)range[0].Value,
                GDP = (decimal)(double)range[1].Value
            };

            // Add the entity
            await countryContext.Countries.AddAsync(country);
        }

        // Commit changes to the database
        await countryContext.SaveChangesAsync();
    }
}
$vbLabelText   $csharpLabel

スプレッドシートに数式を組み込む

Formula プロパティを使用すると、セルの数式を設定できます。

// Iterate through all rows with a value
for (var y = 2; y < i; y++)
{
    // Get the C cell
    var cell = sheet[$"C{y}"].First();

    // Set the formula for the Percentage of Total column
    cell.Formula = $"=B{y}/B{i}";
}
// Iterate through all rows with a value
for (var y = 2; y < i; y++)
{
    // Get the C cell
    var cell = sheet[$"C{y}"].First();

    // Set the formula for the Percentage of Total column
    cell.Formula = $"=B{y}/B{i}";
}
$vbLabelText   $csharpLabel

C列のコードは各州を繰り返し、パーセンテージ合計を計算します。

APIからデータをスプレッドシートにダウンロードする

次の呼び出しでRestClient.Netを使用してREST呼び出しを行います。 JSONをダウンロードし、それをRestCountryタイプの"リスト"に変換します。REST APIからのデータは、各国を反復処理することで簡単にExcelファイルに保存することができます。

/**
 Data API to Spreadsheet
 **/
var client = new Client(new Uri("https://restcountries.eu/rest/v2/"));
List<RestCountry> countries = await client.GetAsync<List<RestCountry>>();
/**
 Data API to Spreadsheet
 **/
var client = new Client(new Uri("https://restcountries.eu/rest/v2/"));
List<RestCountry> countries = await client.GetAsync<List<RestCountry>>();
$vbLabelText   $csharpLabel

APIからのJSONデータは以下のようになります。

Epplus Read Create Excel Alternative 10 related to IronXLを使用してOffice Open XML形式XLSXを開いて書き込む

次のコードは、国名、人口、地域、数値コード、トップ3の言語でスプレッドシートを埋めます。

for (var i = 2; i < countries.Count; i++)
{
    var country = countries[i];

    // Set the basic values
    worksheet[$"A{i}"].Value = country.name;
    worksheet[$"B{i}"].Value = country.population;
    worksheet[$"G{i}"].Value = country.region;
    worksheet[$"H{i}"].Value = country.numericCode;

    // Iterate through languages
    for (var x = 0; x < 3; x++)
    {
        if (x > (country.languages.Count - 1)) break;

        var language = country.languages[x];

        // Get the letter for the column
        var columnLetter = GetColumnLetter(4 + x);

        // Set the language name
        worksheet[$"{columnLetter}{i}"].Value = language.name;
    }
}
for (var i = 2; i < countries.Count; i++)
{
    var country = countries[i];

    // Set the basic values
    worksheet[$"A{i}"].Value = country.name;
    worksheet[$"B{i}"].Value = country.population;
    worksheet[$"G{i}"].Value = country.region;
    worksheet[$"H{i}"].Value = country.numericCode;

    // Iterate through languages
    for (var x = 0; x < 3; x++)
    {
        if (x > (country.languages.Count - 1)) break;

        var language = country.languages[x];

        // Get the letter for the column
        var columnLetter = GetColumnLetter(4 + x);

        // Set the language name
        worksheet[$"{columnLetter}{i}"].Value = language.name;
    }
}
$vbLabelText   $csharpLabel

IronXLを使用してExcelファイルを開く

Excelファイルを起動した後、1番目のシートの1番目のセルを読み取る最初の数行を追加し、印刷します。

static void Main(string[] args)
{
    var workbook = IronXl.WorkBook.Load($@"{Directory.GetCurrentDirectory()}\Files\HelloWorld.xlsx");
    var sheet = workbook.WorkSheets.First();
    var cell = sheet["A1"].StringValue;
    Console.WriteLine(cell);
}
static void Main(string[] args)
{
    var workbook = IronXl.WorkBook.Load($@"{Directory.GetCurrentDirectory()}\Files\HelloWorld.xlsx");
    var sheet = workbook.WorkSheets.First();
    var cell = sheet["A1"].StringValue;
    Console.WriteLine(cell);
}
$vbLabelText   $csharpLabel

IronXLを使って新しいExcelファイルを作成します。

/**
 Create Excel File
 **/
static void Main(string[] args)
{
    var newXLFile = WorkBook.Create(ExcelFileFormat.XLSX);
    newXLFile.Metadata.Title = "IronXL New File";
    var newWorkSheet = newXLFile.CreateWorkSheet("1stWorkSheet");
    newWorkSheet["A1"].Value = "Hello World";
    newWorkSheet["A2"].Style.BottomBorder.SetColor("#ff6600");
    newWorkSheet["A2"].Style.BottomBorder.Type = IronXl.Styles.BorderType.Dashed;
}
/**
 Create Excel File
 **/
static void Main(string[] args)
{
    var newXLFile = WorkBook.Create(ExcelFileFormat.XLSX);
    newXLFile.Metadata.Title = "IronXL New File";
    var newWorkSheet = newXLFile.CreateWorkSheet("1stWorkSheet");
    newWorkSheet["A1"].Value = "Hello World";
    newWorkSheet["A2"].Style.BottomBorder.SetColor("#ff6600");
    newWorkSheet["A2"].Style.BottomBorder.Type = IronXl.Styles.BorderType.Dashed;
}
$vbLabelText   $csharpLabel

その後、 IronXLのコード例に示されているように、それぞれのコードを使用してCSV、JSON、またはXML形式で保存できます。

例えば、XMLに保存するには、.xml

XML形式で保存するには、次のようにSaveAsXmlを使用します。

newXLFile.SaveAsXml($@"{Directory.GetCurrentDirectory()}\Files\HelloWorldXML.XML");
newXLFile.SaveAsXml($@"{Directory.GetCurrentDirectory()}\Files\HelloWorldXML.XML");
$vbLabelText   $csharpLabel

結果は以下のようになります:

<?xml version="1.0" standalone="yes"?>
<_x0031_stWorkSheet>
  <_x0031_stWorkSheet>
    <Column1 xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Hello World</Column1>
  </_x0031_stWorkSheet>
  <_x0031_stWorkSheet>
    <Column1 xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </_x0031_stWorkSheet>
</_x0031_stWorkSheet>
<?xml version="1.0" standalone="yes"?>
<_x0031_stWorkSheet>
  <_x0031_stWorkSheet>
    <Column1 xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Hello World</Column1>
  </_x0031_stWorkSheet>
  <_x0031_stWorkSheet>
    <Column1 xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </_x0031_stWorkSheet>
</_x0031_stWorkSheet>
XML

IronXLは、Excelファイルを読み取るためのより簡潔なAPIを提供します。これにより、ワークブック内の列、行、セルへのアクセスに必要なコード行数が少なくなります。 一方、EPPlusは、よりきめ細かなセルレベルのAPIを提供しており、明示的な列と行の処理が必要となるため、細かい制御は可能だが、冗長性が高まる。

IronXLは、Excelドキュメントを操作する際に、より幅広い柔軟性を提供します。 この機能により、任意の時点でシートを追加作成したり、単一のワークフローで複数のワークシートやワークブックのデータを読み込むこと、ワークブックのデータをデータベースに直接エクスポートしたりすることが可能になります。 EPPlusは、APIを個々のワークシートの操作に特化させています。これは単一シートのタスクには分かりやすいアプローチですが、複数のワークブックにわたる操作が必要なチームにとっては、追加の統合手順が必要になります。

EPPlusとIronXLのライセンスと価格設定はどのように違うのか?

EPPlusのライセンスモデルと価格

EPPlusは、非商業用ライセンスモデルまたはPolyformの商業用ライセンスモデルのいずれかで使用できます。

商業用ライセンス

これらは永続的およびサブスクリプションベースのフォーマットで利用でき、1か月から2年間の期間に対応しています。

すべてのライセンスカテゴリーにおいて、ライセンス期間中のサポートセンターを通じたサポートおよびNuGetを通じたアップグレードが含まれています。

EPPlusは1ライセンスあたり1つの開発者が必要です。 ライセンスは個々のユーザーに発行され、共有することはできません。 一般的なガイドラインとして、EPPlusを直接使用するコードの作成やデバッグが必要である人はすべて商業ライセンスを所有するべきです。

EPPlusの機能をAPIを通じて内部的に提供する場合(例:APIを介してその能力を提供する)、あなたの会社はEPPlusをサービスとして提供する内部ユーザー(開発者)の数以内でサブスクリプションを購入する必要があります。

サブスクリプション

サブスクリプションで常に最新バージョンを使用できますが、開発にEPPlusを使用する限り有効なライセンスが必要です。 ライセンス期間終了時には、支払いが完了した後にライセンスが自動的に請求および更新されます。 ライセンス期間終了時にサブスクリプションをキャンセルし、新しいものをいつでも開始することができます。サブスクリプションはインターネットでのみ購入できます。

EPPlusは商業用に使用できます。 ライセンスは1社あたり1つの開発者が使用でき、デプロイメントの場所に無制限の数が許可されます。 毎年の購入可能なライセンスの数は増減可能であり、ライセンスは各年末に一時停止またはキャンセルできます。

32日の試用期間がオプションとして利用可能です。

価格: $299から年間スタート。

利用ごとの支払いが可能

1つの組織内で、デプロイメント場所に無制限の開発者あたりの価格で、Stripeの請求を受けられます。 毎月の購入可能なライセンス数は増減可能であり、ライセンスは月末に一時停止またはキャンセルできます。

価格: $29から月額スタート。

永続ライセンス

永続ライセンスを持つと、新しいバージョンにアップグレードし、一定期間サポートを受けられます。その後、この期間中にリリースされたバージョンを使用してソフトウェアを開発し続けることができます。

価格は、無制限のデプロイメントサイトを持つ開発者ごとに同じ会社内で計算されます。 サポート/アップグレード期間にリリースされたすべてのEPPlusバージョンの無期限使用。

32日の試用期間がオプションとして利用可能です。

価格: $599から年間スタート。

パッケージ

最初のサポートおよびアップグレードの期間を持つ永続ライセンスオプションが利用可能です。 この期間中にリリースされたバージョンを使用してソフトウェアを開発し続けることができます。

価格: $4,295から年間スタート。

Polyform用の非商業用ライセンス

EPPlusはバージョン5からPolyformの非商業用ライセンスのもとでライセンスされています。これはコードがオープンソースであり、非商業的な用途で使用できることを意味します。 詳細は彼らのウェブサイトで確認できます。

IronXLのライセンスモデルと価格

永続ライセンス:各ライセンスは一度購入され、更新を必要としません。

無料サポート&製品アップデート:各ライセンスは1年間の無料製品更新とサポートが付きます。 いかなる瞬間でも拡張機能を購入することが可能です。 拡張機能を閲覧できます。

即時ライセンス:支払いが受領されると、登録されたライセンスキーが送信されます。

IronXL for .NETライセンスに関して何か質問があれば、弊社のIron Softwareライセンススペシャリストにお問い合わせください。

すべてのライセンスは永続的であり、開発、ステージング、本番環境に適用されます。

ライト - 各ライセンスは一組織内の1人のソフトウェア開発者がIron Softwareを1か所で使用することを許可します。 Iron Softwareは単一のWebアプリケーション、イントラネットアプリケーション、またはデスクトップソフトウェアプログラムで使用できます。 ライセンスは譲渡不可で、組織や代理店/クライアントの関係を外れて共有することはできません。このライセンスタイプは、他のすべてのライセンスタイプと同様に、契約で明示的に付与されていないすべての権利、OEM再配布、Iron Softwareを追加の保証を購入せずにSaaSとして使用することを明示的に除外します。

価格: $489から年間スタート。

プロフェッショナルライセンス - 事前に決まった数のソフトウェア開発者が、一組織内で最大10か所までIron Softwareを使用できるようにします。 Iron Softwareは、好きなだけ多くのWebサイト、イントラネットアプリケーション、またはデスクトップソフトウェアアプリケーションで使用できます。ライセンスは譲渡不可で、組織外または代理店/クライアント関係外では共有できません。このライセンスタイプは、他のすべてのライセンスタイプと同様、OEMの再配布や追加のカバレッジを購入せずにSaaSとしてIron Softwareを利用することを含むすべての権利を明示的に本契約に基づき排除します。

価格: $976から年間スタート。

無制限ライセンス - 業務用にIron Softwareを何人のソフトウェア開発者も無制限の数の場所で利用できるようにします。 Iron Softwareは、好きなだけ多くのWebサイト、イントラネットアプリケーション、またはデスクトップソフトウェアアプリケーションで使用できます。ライセンスは譲渡不可で、組織外または代理店/クライアント関係外では共有できません。このライセンスタイプは、他のすべてのライセンスタイプと同様、OEMの再配布や追加のカバレッジを購入せずにSaaSとしてIron Softwareを利用することを含むすべての権利を明示的に本契約に基づき排除します。

ロイヤルティフリーの再配布 - Iron Softwareを多様なパッケージ化された商用製品の一部として(ロイヤルティを支払うことなく)再配布することを許可します。 SaaSソフトウェアサービス内でのIron Softwareの配備を許可します。

価格: $2939から年間スタート。

ライセンス費用以外にも、プロジェクトの総費用には、JSONやXMLなどのフォーマットに対応した追加のエクスポートロジックの作成、手動によるデータベース統合パイプラインの構築、ライブラリがネイティブに処理しない複数ワークブックのオーケストレーションの管理などに費やされた開発者の時間が含まれます。 複数年にわたるプロジェクトライフサイクル全体でコストを評価するチームにとって、これらの統合および保守コストは、ライセンスモデル間の差額をしばしば上回る。

どちらのライブラリを選ぶべきか?

EPPlusは、Office Open XMLスプレッドシートを操作するための堅牢で実績のあるAPIを提供しており、そのきめ細かなセルレベルの制御機能は、ワークシートの精密な操作が必要なプロジェクトに適しています。 複数のフォーマット(XML、HTML、JSON)へのエクスポート、ワークブック間の操作、データベース統合といった要件を持つチームのために、 IronXLはこれらの機能を第一級の機能として追加します。IronXLは、ドキュメントが編集されるたびに数式を再計算し、WorkSheet[“A1:B10”] を使用した直感的な範囲構文を提供します。 セルのデータ形式は、テキスト、数値、数式、日付、通貨、パーセンテージ、指数表記、時刻など多岐にわたり、セルのスタイル設定は、フォント、サイズ、背景パターン、罫線、配置などを対象としています。 範囲指定、列指定、行指定による並べ替えが可能です。 どちらを選ぶかは、最終的にはプロジェクトでEPPlusのOpen XML処理に特化した機能が必要なのか、それともIronXLのより幅広い機能が必要なのかによって決まります。 IronXLがお客様のワークフローにどのように適合するかを確認するには、 30日間の無料トライアルをダウンロードして、この記事で紹介されている例をご自身の環境でお試しください。

ご注意EPPlusはその権利保有者の登録商標です。 このサイトは、EPPlusとは提携しておらず、賛同、または後援されていません。] すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。

よくある質問

Microsoft Officeを使用せずにExcelファイルを作成するにはどうすればよいですか?

Microsoft Officeを使用せずにExcelファイルを作成するにはIronXLを使用できます。IronXLはC#およびVB.NETでExcelスプレッドシートを読み込み、編集、作成するためのシンプルなAPIを提供します。

EPPlusよりIronXLを使用する利点は何ですか?

IronXLはより直感的なAPIを提供し、XML、HTML、JSONなどの複数のファイル形式をサポートし、高度なスタイリングと数式の再計算を可能にします。これにより、EPPlusと比較して、開発者にとってより実用的で柔軟性があります。

IronXLを使用してExcelデータを操作し、異なる形式にエクスポートすることは可能ですか?

はい、IronXLはExcelデータをXML、HTML、JSONなどの異なる形式にエクスポートすることをサポートしており、データベースや他のアプリケーションとの統合が容易です。

IronXLでExcelの数式をどのように処理しますか?

IronXLは直感的な数式の再計算をサポートしており、ドキュメントが編集されるたびに数式が自動的に更新されるため、Excelの数式を効率的に管理するシステムを提供します。

IronXLのライセンスオプションは何ですか?

IronXLは、開発、ステージング、プロダクション環境向けに永続ライセンスを提供し、1開発者あたり年間$489からの価格設定となっています。1年間の無料アップデートとサポートが含まれています。

EPPlusはピボットテーブルの作成や条件付き書式の適用に使用できますか?

はい、EPPlusはピボットテーブルの作成と条件付き書式の適用をサポートしていますが、一般的にIronXLよりも複雑なコードが必要です。

IronXLはクロスプラットフォーム開発をどのようにサポートしますか?

IronXLは.NET Core、.NET Framework、Xamarin、Mobile、Linux、macOS、Azureなどの多様なプラットフォームをサポートしており、クロスプラットフォーム開発において非常に柔軟です。

IronXLを使用するためにサーバーやクライアントマシンにMicrosoft Officeをインストールする必要がありますか?

いいえ、IronXLはMicrosoft Officeのインストールを必要としません。Officeから独立して機能するように設計されており、Excelファイルの読み込み、編集、作成の機能を提供します。

Excelファイルを扱うためのEPPlusの主な機能は何ですか?

EPPlusはOffice OpenXMLのサポートで知られており、Excelに精通した開発者にとって使いやすく、ピボットテーブルの作成や条件付き書式の適用などの機能を備えています。商用および非商用の二重ライセンスモデルで提供されています。

私 for .NETプロジェクトにIronXLをどのようにインストールできますか?

NuGetパッケージマネージャーコンソールでInstall-Package IronXL.Excelというコマンドを使用して、または.NET CLIを使用してdotnet add package IronXL.ExcelでIronXLをインストールできます。

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

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

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

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね