フッターコンテンツにスキップ
IRONXLの使用

OleDb とIronXLを使用して DataTable を Excel C# にエクスポートする

適切なライブラリを使用すれば、Office に依存せずに C# で DataTable を Excel ファイルにエクスポートするのは簡単です。 WorkBook.Create() を呼び出し、dataTable.Columns からヘッダーを書き込み、dataTable.Rows をループしてセルにデータを入力してから、workbook.SaveAs("output.xlsx") で保存します。 結果的に、 .NET 10、Linux コンテナー、Azure サーバーレス関数など、あらゆるプラットフォームで動作する完全にフォーマットされた XLSX ファイルが生成されます。

このガイドでは、従来の オレDB アプローチと最新のIronXL for .NETメソッドを比較します。 オレDB ドライバーがデプロイメントと互換性の問題を引き起こす理由と、SQL 構文や Windows 専用のドライバーをインストールせずに、列ヘッダー、データ型、セルの書式設定、大規模なデータセットを処理するクリーンで保守可能なコードに置き換える方法について説明します。


DataTable エクスポート用にIronXLをインストールするにはどうすればよいでしょうか?

エクスポート コードを記述する前に、 IronXL をプロジェクトに追加します。 Visual StudioでPackage Manager Consoleを開き、実行してください:

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

IronXL は、Microsoft Office、Access データベース エンジン、または COM 相互運用レイヤーに依存しません。 パッケージをインストールすると、1 行も変更せずに、Windows、Linux、macOS、Docker、 AzureAWSで同じコードを実行できます。

オレDB にドライバーのインストールが必要な理由

従来の オレDB アプローチでは、Excel ファイルをデータベースとして扱います。 Microsoft.ACE.OLEDB.12.0 プロバイダー (または .xls ファイルの場合は古い Microsoft.Jet.OLEDB.4.0) を使用して オレDBConnection を確立し、スプレッドシートに対して SQL コマンド CREATE TABLE および INSERT INTO を実行します。 これは、Microsoft Office またはスタンドアロンの Access データベース エンジンの再頒布可能パッケージが既にインストールされている開発者マシンで動作します。 ただし、運用環境 (特にクラウド関数、Docker コンテナー、ヘッドレス.NET 10 を実行しているサーバー ファーム) ではそのドライバーが利用できることはほとんどなく、インストールするには昇格された権限と、ドライバーとプロセス間のビット数の一致が必要になります。

開発者が Excel エクスポートに オレDB を依然として使用する理由は何ですか?

オレDB はすでに.NET Frameworkの一部であったため、Excel 自動化のデフォルトの選択肢となりました。 開発者は既に ADO .NETを知っていたので、オレDBCommand、および オレDBDataAdapter を再利用して Excel に書き込むのは自然なことでした。 サードパーティのパッケージは必要ありませんでした。また、CREATE TABLE および INSERT INTO の SQL のような構文により、データベース プログラミングに精通しているユーザーであればその意図が明らかになりました。

オレDB を使用して DataTable をエクスポートするための従来のパターンは次のとおりです。

using System.Data;
using System.Data.オレDB;

// Build a sample DataTable
DataTable dataTable = new DataTable("Products");
dataTable.Columns.Add("ProductID", typeof(int));
dataTable.Columns.Add("ProductName", typeof(string));
dataTable.Columns.Add("Price", typeof(decimal));
dataTable.Rows.Add(1, "Widget", 29.99m);
dataTable.Rows.Add(2, "Gadget", 49.99m);
dataTable.Rows.Add(3, "Gizmo", 19.99m);

// オレDB connection string -- file must already exist on disk
string filename = @"C:\Output\Products.xlsx";
string connectionString =
    $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={filename};" +
    "Extended Properties='Excel 12.0 Xml;HDR=YES'";

using オレDBConnection connection = new(connectionString);
connection.Open();

// Create the sheet structure with SQL DDL
string create = "CREATE TABLE [Sheet1$] (ProductID INT, ProductName CHAR(255), Price DOUBLE)";
using (var createCmd = new オレDBCommand(create, connection))
    createCmd.ExecuteなしnQuery();

// Insert rows one at a time
string insert = "INSERT INTO [Sheet1$] (ProductID, ProductName, Price) VALUES (?, ?, ?)";
using オレDBCommand insertCmd = new(insert, connection);
insertCmd.Parameters.Add(new オレDBParameter("ProductID", オレDBType.Integer));
insertCmd.Parameters.Add(new オレDBParameter("ProductName", オレDBType.VarChar, 255));
insertCmd.Parameters.Add(new オレDBParameter("Price", オレDBType.Double));

foreach (DataRow row in dataTable.Rows)
{
    insertCmd.Parameters[0].Value = row["ProductID"];
    insertCmd.Parameters[1].Value = row["ProductName"];
    insertCmd.Parameters[2].Value = row["Price"];
    insertCmd.ExecuteなしnQuery();
}
using System.Data;
using System.Data.オレDB;

// Build a sample DataTable
DataTable dataTable = new DataTable("Products");
dataTable.Columns.Add("ProductID", typeof(int));
dataTable.Columns.Add("ProductName", typeof(string));
dataTable.Columns.Add("Price", typeof(decimal));
dataTable.Rows.Add(1, "Widget", 29.99m);
dataTable.Rows.Add(2, "Gadget", 49.99m);
dataTable.Rows.Add(3, "Gizmo", 19.99m);

// オレDB connection string -- file must already exist on disk
string filename = @"C:\Output\Products.xlsx";
string connectionString =
    $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={filename};" +
    "Extended Properties='Excel 12.0 Xml;HDR=YES'";

using オレDBConnection connection = new(connectionString);
connection.Open();

// Create the sheet structure with SQL DDL
string create = "CREATE TABLE [Sheet1$] (ProductID INT, ProductName CHAR(255), Price DOUBLE)";
using (var createCmd = new オレDBCommand(create, connection))
    createCmd.ExecuteなしnQuery();

// Insert rows one at a time
string insert = "INSERT INTO [Sheet1$] (ProductID, ProductName, Price) VALUES (?, ?, ?)";
using オレDBCommand insertCmd = new(insert, connection);
insertCmd.Parameters.Add(new オレDBParameter("ProductID", オレDBType.Integer));
insertCmd.Parameters.Add(new オレDBParameter("ProductName", オレDBType.VarChar, 255));
insertCmd.Parameters.Add(new オレDBParameter("Price", オレDBType.Double));

foreach (DataRow row in dataTable.Rows)
{
    insertCmd.Parameters[0].Value = row["ProductID"];
    insertCmd.Parameters[1].Value = row["ProductName"];
    insertCmd.Parameters[2].Value = row["Price"];
    insertCmd.ExecuteなしnQuery();
}
$vbLabelText   $csharpLabel

このコードは、各DataRowを個別のデータベースラウンドトリップとして挿入します。大規模なデータセットの場合、オレDBにはバッチ挿入メカニズムがないため、このループがボトルネックになります。 すべての行は、次の行に移動する前に、完全な SQL 解析、パラメータ バインド、および書き込みサイクルをトリガーします。

Excel エクスポートにおける オレDB の主な制限は何ですか?

オレDB が不十分な理由を理解することで、チームに移行の正当性を示し、適切な代替品を選択するのに役立ちます。

ドライバーの依存関係とビット数の競合

Microsoft.ACE.OLEDB.12.0 プロバイダーは、アプリケーションを実行する各マシンに個別にインストールする必要があります。 プロセスが64ビットであるにもかかわらず、32ビット版のAccessデータベースエンジンしか利用できない場合(Microsoft Office 32ビット版が64ビット版.NETランタイムと共にインストールされている場合によく見られる構成)、接続時に実行時に例外がスローされます。Microsoftは これらのビット制限について文書化しており、ドライバーと呼び出し元プロセスのビット数を一致させることを推奨していますが、共有ホスティング環境やコンテナ化された環境では、これは多くの場合現実的ではありません。

クロスプラットフォームサポートなし

オレDB は Windows 専用のテクノロジーです。 .NET 10 は Linux と macOS をネイティブにサポートしており、最新のアーキテクチャでは Linux ノード上の Docker コンテナーでアプリケーション ワークロードが実行されるケースが増えています。 System.Data.オレDB 名前空間は Windows 以外のオペレーティング システムで PlatformなしtSupportedException をスローするため、オレDB を使用するコード パスはこれらのプラットフォーム上で完全に実行がブロックされます。

セルの書式設定機能なし

オレDB はスプレッドシートをフラットなデータベース テーブルとして扱います。 生の値を挿入することはできますが、セルのフォント、背景色、境界線、数値の書式、列幅を適用するメカニズムはありません。 エクスポートにヘッダー行のスタイル、通貨の書式設定、条件付きの色分けなどを含むプロフェッショナルなレポートが必要な場合、オレDB ではそれを実現できません。 別のライブラリまたは Excel Interop COM オブジェクトを使用した 2 回目のパスが必要になります。これにより、独自の Office 依存関係が追加されます。

Excelファイルが既に存在している必要があります

オレDB では、新しい Excel ブックを最初から作成することはできません。 接続を開く前に、ファイルがターゲット パスにすでに存在している必要があります。 これには、事前にシードされたテンプレート ファイル、または別のライブラリを使用してワークブックを作成するための別の手順が必要になり、展開パッケージに不必要な複雑さが追加されます。

DELETE操作はサポートされていません

Excel 用の オレDB ドライバーは、INSERT および制限付きの UPDATE 操作をサポートしていますが、DELETE FROM を使用した行の削除はサポートされていません。 エクスポート後に行を削除する必要があるデータ操作ワークフローでは、手動によるファイル操作または完全なファイル再作成に頼る必要がありますが、どちらも オレDB インターフェイスでは簡単ではありません。

IronXLを使用して DataTable を Excel にエクスポートするにはどうすればよいですか?

IronXL は、オレDB パイプライン全体を直接オブジェクト モデルに置き換えます。 接続文字列、SQL コマンド、ドライバー要件はありません。 各セルに対して、WorkBook を作成し、WorkSheet を追加して、SetCellValue() を呼び出します。

using IronXL;
using System.Data;

// Build the same DataTable
DataTable dataTable = new DataTable("Products");
dataTable.Columns.Add("ProductID", typeof(int));
dataTable.Columns.Add("ProductName", typeof(string));
dataTable.Columns.Add("Price", typeof(decimal));
dataTable.Rows.Add(1, "Widget", 29.99m);
dataTable.Rows.Add(2, "Gadget", 49.99m);
dataTable.Rows.Add(3, "Gizmo", 19.99m);

// Create a new workbook and worksheet -- no template file needed
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Products");

// Write column headers into the first row
for (int col = 0; col < dataTable.Columns.Count; col++)
{
    worksheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);
}

// Write data rows
for (int row = 0; row < dataTable.Rows.Count; row++)
{
    for (int col = 0; col < dataTable.Columns.Count; col++)
    {
        worksheet.SetCellValue(row + 1, col, dataTable.Rows[row][col].ToString());
    }
}

workbook.SaveAs("Products.xlsx");
using IronXL;
using System.Data;

// Build the same DataTable
DataTable dataTable = new DataTable("Products");
dataTable.Columns.Add("ProductID", typeof(int));
dataTable.Columns.Add("ProductName", typeof(string));
dataTable.Columns.Add("Price", typeof(decimal));
dataTable.Rows.Add(1, "Widget", 29.99m);
dataTable.Rows.Add(2, "Gadget", 49.99m);
dataTable.Rows.Add(3, "Gizmo", 19.99m);

// Create a new workbook and worksheet -- no template file needed
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Products");

// Write column headers into the first row
for (int col = 0; col < dataTable.Columns.Count; col++)
{
    worksheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);
}

// Write data rows
for (int row = 0; row < dataTable.Rows.Count; row++)
{
    for (int col = 0; col < dataTable.Columns.Count; col++)
    {
        worksheet.SetCellValue(row + 1, col, dataTable.Rows[row][col].ToString());
    }
}

workbook.SaveAs("Products.xlsx");
$vbLabelText   $csharpLabel

WorkBook.Create(ExcelFileFormat.XLSX) はメモリ内に新しいワークブックを構築します。事前にファイルが存在している必要はありません。 CreateWorkSheet("Products") 名前付きタブを追加します。 ネストされたループは、DataTable の行と列の数を正確に反映し、セルごとに 1 つの値を書き込みます。 SaveAs() ワークブックを完全に有効な XLSX ファイルとしてディスクにフラッシュします。

出力

オレDB とIronXLを使用して DataTable を Excel C# にエクスポートする方法: 画像 1 - Excel 出力

利用可能なオプションの詳細については、 DataSet および DataTable のエクスポートのハウツー ガイドで追加のオーバーロードとバッチ エクスポート パターンについて説明しています。

DataTable をエクスポートするときにセルの書式設定を追加するにはどうすればよいですか?

基本的なエクスポート後の最も一般的な要件の 1 つは、ヘッダー行をスタイル設定してデータ行と区別することです。 IronXL は、オレDB では対応できない完全なスタイル API を公開します。

using IronXL;
using IronXl.Styles;
using System.Data;

DataTable dataTable = new DataTable("Products");
dataTable.Columns.Add("ProductID", typeof(int));
dataTable.Columns.Add("ProductName", typeof(string));
dataTable.Columns.Add("Price", typeof(decimal));
dataTable.Rows.Add(1, "Widget", 29.99m);
dataTable.Rows.Add(2, "Gadget", 49.99m);
dataTable.Rows.Add(3, "Gizmo", 19.99m);

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Products");

// Write and style the header row
for (int col = 0; col < dataTable.Columns.Count; col++)
{
    var headerCell = worksheet[$"{(char)('A' + col)}1"];
    headerCell.Value = dataTable.Columns[col].ColumnName;
    headerCell.Style.Font.Bold = true;
    headerCell.Style.BackgroundColor = "#4472C4";
    headerCell.Style.Font.FontColor = "#FFFFFF";
}

// Write data rows with price column formatted as currency
for (int row = 0; row < dataTable.Rows.Count; row++)
{
    for (int col = 0; col < dataTable.Columns.Count; col++)
    {
        var cell = worksheet[$"{(char)('A' + col)}{row + 2}"];
        cell.Value = dataTable.Rows[row][col].ToString();

        // Apply currency format to the Price column
        if (dataTable.Columns[col].ColumnName == "Price")
            cell.FormatString = "$#,##0.00";
    }
}

// Auto-size columns so content is not clipped
worksheet.AutoSizeColumn(0);
worksheet.AutoSizeColumn(1);
worksheet.AutoSizeColumn(2);

workbook.SaveAs("ProductsStyled.xlsx");
using IronXL;
using IronXl.Styles;
using System.Data;

DataTable dataTable = new DataTable("Products");
dataTable.Columns.Add("ProductID", typeof(int));
dataTable.Columns.Add("ProductName", typeof(string));
dataTable.Columns.Add("Price", typeof(decimal));
dataTable.Rows.Add(1, "Widget", 29.99m);
dataTable.Rows.Add(2, "Gadget", 49.99m);
dataTable.Rows.Add(3, "Gizmo", 19.99m);

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Products");

// Write and style the header row
for (int col = 0; col < dataTable.Columns.Count; col++)
{
    var headerCell = worksheet[$"{(char)('A' + col)}1"];
    headerCell.Value = dataTable.Columns[col].ColumnName;
    headerCell.Style.Font.Bold = true;
    headerCell.Style.BackgroundColor = "#4472C4";
    headerCell.Style.Font.FontColor = "#FFFFFF";
}

// Write data rows with price column formatted as currency
for (int row = 0; row < dataTable.Rows.Count; row++)
{
    for (int col = 0; col < dataTable.Columns.Count; col++)
    {
        var cell = worksheet[$"{(char)('A' + col)}{row + 2}"];
        cell.Value = dataTable.Rows[row][col].ToString();

        // Apply currency format to the Price column
        if (dataTable.Columns[col].ColumnName == "Price")
            cell.FormatString = "$#,##0.00";
    }
}

// Auto-size columns so content is not clipped
worksheet.AutoSizeColumn(0);
worksheet.AutoSizeColumn(1);
worksheet.AutoSizeColumn(2);

workbook.SaveAs("ProductsStyled.xlsx");
$vbLabelText   $csharpLabel

これにより、青いヘッダー行、白いヘッダー テキスト、ドル記号と 2 つの小数点以下で表示された価格値を含むファイルが生成されます。 セルのフォント サイズ ガイド境界線および配置のリファレンスでは、利用可能なスタイル オプションの完全なセットについて説明しています。

大規模なデータテーブルのエクスポートの処理

数千行のデータセットの場合、パフォーマンスが重要です。 IronXL は、単一のディスク書き込みの前に、SaveAs() ですべてのセル値をメモリに書き込みます。これは、行ごとに 1 つの ExecuteなしnQuery() という オレDB パターンよりもはるかに効率的です。 非常に大きなテーブルをエクスポートする必要がある場合は、メモリ効率の高いストリーミング手法について説明している、DataTable を Excel にエクスポートする最も速い方法ガイドを参照してください。

数式、範囲、名前付きテーブルを使用してエクスポート ロジックをグループ化することもできます。 スプレッドシートの作成方法.NETでの Excel の記述ガイドでは、 DataTables から複数シートのワークブックを構築するための完全なパターンが提供されています。

ASP.NETで DataTable を Excel にエクスポートするにはどうすればよいですか?

Web アプリケーションでは通常、ワークブックをディスクに保存するのではなく、ブラウザーに直接ストリーミングします。 IronXL はworkbook.ToByteArray() でこれをサポートしており、HTTP 応答に書き込むことができるバイナリ コンテンツを返します。

// In an ASP.NET controller action
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Report");

// Assume dataTable is populated from your data source
for (int col = 0; col < dataTable.Columns.Count; col++)
    worksheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);

for (int row = 0; row < dataTable.Rows.Count; row++)
    for (int col = 0; col < dataTable.Columns.Count; col++)
        worksheet.SetCellValue(row + 1, col, dataTable.Rows[row][col].ToString());

byte[] fileBytes = workbook.ToByteArray();
return File(fileBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Report.xlsx");
// In an ASP.NET controller action
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("Report");

// Assume dataTable is populated from your data source
for (int col = 0; col < dataTable.Columns.Count; col++)
    worksheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);

for (int row = 0; row < dataTable.Rows.Count; row++)
    for (int col = 0; col < dataTable.Columns.Count; col++)
        worksheet.SetCellValue(row + 1, col, dataTable.Rows[row][col].ToString());

byte[] fileBytes = workbook.ToByteArray();
return File(fileBytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Report.xlsx");
$vbLabelText   $csharpLabel

ASP.NET のDataTable を Excel にエクスポートするチュートリアルでは、 ASP.NETアプリケーションのコントローラーとビューの配線全体について説明します。 DataTable から Excel C# へのガイドでは、複数シートのエクスポートや DataSet のサポートなどの追加のシナリオについて説明します。

オレDBとIronXLの比較

C# で DataTable から Excel へのエクスポートを行う際の オレDB とIronXLの機能比較
能力 オレDB IronXL
ドライバーのインストールが必要です はい (ACE.OLEDB または Jet) なし
クロスプラットフォーム(.NET 10 / Linux) なし はい
新しいワークブックを最初から作成する なし はい
セルの書式設定とスタイル なし はい
数式サポート なし はい
バッチ挿入のパフォーマンス 行ごと(遅い) インメモリ(高速)
DELETE行のサポート なし はい
Docker / コンテナサポート なし はい

エクスポート中に列のデータ型をどのように処理しますか?

DataTable 列に数値または日付値が保持されている場合、それらを文字列として書き込むと、Excel ではセルがテキストとして扱われ、並べ替え、フィルター処理、および数式参照が無効になります。 IronXL は、 .ToString() を呼び出すのではなく、値を直接渡すときにネイティブ タイプを保持します。

WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("TypedData");

DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Amount", typeof(decimal));
table.Columns.Add("Date", typeof(DateTime));
table.Rows.Add(1, 1500.75m, new DateTime(2025, 6, 15));
table.Rows.Add(2, 3200.00m, new DateTime(2025, 7, 4));

// Write headers
for (int col = 0; col < table.Columns.Count; col++)
    worksheet.SetCellValue(0, col, table.Columns[col].ColumnName);

// Write typed values -- no .ToString() conversion
for (int row = 0; row < table.Rows.Count; row++)
{
    worksheet.SetCellValue(row + 1, 0, (int)table.Rows[row]["ID"]);
    worksheet.SetCellValue(row + 1, 1, (double)(decimal)table.Rows[row]["Amount"]);
    worksheet[$"C{row + 2}"].Value = (DateTime)table.Rows[row]["Date"];
    worksheet[$"C{row + 2}"].FormatString = "yyyy-MM-dd";
}

workbook.SaveAs("TypedData.xlsx");
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet worksheet = workbook.CreateWorkSheet("TypedData");

DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Amount", typeof(decimal));
table.Columns.Add("Date", typeof(DateTime));
table.Rows.Add(1, 1500.75m, new DateTime(2025, 6, 15));
table.Rows.Add(2, 3200.00m, new DateTime(2025, 7, 4));

// Write headers
for (int col = 0; col < table.Columns.Count; col++)
    worksheet.SetCellValue(0, col, table.Columns[col].ColumnName);

// Write typed values -- no .ToString() conversion
for (int row = 0; row < table.Rows.Count; row++)
{
    worksheet.SetCellValue(row + 1, 0, (int)table.Rows[row]["ID"]);
    worksheet.SetCellValue(row + 1, 1, (double)(decimal)table.Rows[row]["Amount"]);
    worksheet[$"C{row + 2}"].Value = (DateTime)table.Rows[row]["Date"];
    worksheet[$"C{row + 2}"].FormatString = "yyyy-MM-dd";
}

workbook.SaveAs("TypedData.xlsx");
$vbLabelText   $csharpLabel

Excel では、金額列を数値で並べ替え、日付ピッカーを使用して日付列をフィルターできるようになりました。 追加のデータ形式パターンについては、セル データ形式の設定ガイドを参照してください。 エクスポート後にデータを読み戻す必要がある場合は、 Excel から DataTable へのチュートリアルで逆の操作が説明されています。

既存の オレDB エクスポート コードの移行

オレDB からIronXLへの移行には、通常、1 回のスプリントよりも短い時間がかかります。 構造上の変更点は以下のとおりです。

  1. すべての using System.Data.オレDB 参照と、ACE ドライバー ラッパー パッケージへのNuGet参照をすべて削除します。
  2. オレDBConnection 初期化ブロックを WorkBook.Create(ExcelFileFormat.XLSX) に置き換えます。
  3. CREATE TABLE コマンドを workbook.CreateWorkSheet("SheetName") に置き換えます。
  4. INSERT INTO ループを、セルごとに 1 つずつネストされた SetCellValue() 呼び出しに置き換えます。
  5. connection.Close()workbook.SaveAs("output.xlsx") に置き換えます。

下流の消費者がまだ Excel 2007 以降にアップグレードしていない場合は、.xls 拡張子を持つ workbook.SaveAs() を呼び出して、従来の形式のファイルを生成することもできます。 スプレッドシート ファイル タイプの変換ガイドには、サポートされているすべての出力形式がリストされています。

IronXL のテストとライセンスはどのように行いますか?

IronXL は試用ライセンスを使用して開発に無料で使用できます。 最初のIronXL呼び出しの前にコードでキーを適用します。

IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
$vbLabelText   $csharpLabel

ライセンス キー アプリケーション ガイドでは、構成ファイルや環境変数など、すべての配置オプションについて説明します。 クラウド デプロイメントの場合、 DockerおよびLinux の入門ページで、プラットフォーム固有のセットアップ手順が説明されています。

Microsoft は、オレDB シナリオのAccess データベース エンジンの既知の制限事項を文書化しており、 NuGet.org は完全なバージョン履歴とダウンロード統計を含むIronXLパッケージをホストしています。 公式のOpen XML SDK ドキュメントでは、 IronXL が実装する基礎となる XLSX 仕様について説明しています。

次のステップは何ですか?

これで、オレDB ドライバー、SQL 構文、プラットフォームの制限なしで、DataTable を XLSX ファイルにエクスポートするための実用的なパターンができました。 コア ワークフロー (ループ内の SetCellValue()、そして SaveAs()) は、3 行のサンプルから数十万行のデータ セットにまで拡張できます。

まず、既存の オレDB エクスポートを上記の基本的なIronXLパターンに置き換え、データのエクスポートが検証されたら、スタイル API を使用してフォーマットを重ねていきます。 ライブラリがサポートする全範囲を理解するには、IronXLのスタートガイド機能の概要を次に読むとよいでしょう。 同じパイプラインの一部として CSV ファイルを操作する場合は、 C# DataTable から CSV へのガイドで、同じ DataTable オブジェクトからコンマ区切りの出力を生成する方法が示されています。

よくある質問

C# で OleDb を使用して DataTable を Excel にエクスポートする場合の制限は何ですか?

C#でOleDbを使用してDataTableをExcelにエクスポートするのは、そのレガシーな性質のために面倒な場合があります。開発者は互換性の問題、パフォーマンスの低下、エラー処理の複雑化といった制限に直面することが多く、 IronXLのような最新の代替手段の方が魅力的です。

IronXL はDataTable を Excel にエクスポートするプロセスをどのように改善しますか?

IronXLは、DataTableをExcelにエクスポートするための最新のアプローチを提供し、優れたパフォーマンス、幅広い互換性、そして簡素化されたコードを実現します。OleDbでよくあるフラストレーションを解消し、 .NET開発者がExcelエクスポートをより簡単に管理できるようにします。

DataTable エクスポートのために OleDb からIronXLへの切り替えを検討する必要があるのはなぜですか?

DataTable エクスポートにIronXLに切り替えると、パフォーマンスの向上、実装の簡素化、最新 for .NETアプリケーションとの互換性の強化など、いくつかの利点が得られ、開発に必要な時間と労力が削減されます。

IronXL は、大規模な DataTable エクスポートを OleDb よりも効率的に処理できますか?

はい、 IronXLは大規模な DataTable エクスポートを効率的に処理するように設計されており、OleDb と比較して処理時間が短縮され、メモリ使用量が削減されるため、大量のデータ セットを扱うアプリケーションに最適です。

IronXL は最新バージョンの C# および.NETと互換性がありますか?

IronXL は最新バージョンの C# および.NETと完全に互換性があり、最新のアプリケーションとのシームレスな統合を保証すると同時に、新機能や改善点をサポートする継続的な更新を提供します。

IronXLのような最新の代替手段は、従来の OleDb に比べてどのような利点がありますか?

IronXLのような最新の代替手段は、パフォーマンスの向上、エラー処理の簡素化、さまざまな Excel 形式との互換性の向上、コードの簡素化などの利点を提供し、開発者の生産性を大幅に向上させます。

OleDb と比較して、 IronXL はエラー管理をどのように処理しますか?

IronXL は、明確な例外処理による簡素化されたエラー管理を提供し、OleDb に関連する複雑さと潜在的な問題を軽減するため、開発者がアプリケーションをデバッグおよび保守しやすくなります。

UI ベース for .NETアプリケーションで DataTable を Excel にエクスポートする一般的な使用例は何ですか?

UI ベース for .NETアプリケーションでは、DataTable を Excel にエクスポートすることは、レポートの生成、データ分析、およびユーザーフレンドリなデータ操作によく使用され、多くの場合、オブジェクト センダー パターンを使用するイベント ハンドラーからトリガーされます。

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

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

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me