C#でデータセットとしてインポートおよびエクスポートする方法|IronXL

C#でDataSet/DataTableをインポート&エクスポートする方法

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronXLは単一のメソッド呼び出しでExcelのワークブックとデータセットを変換します。データセットをワークブックにインポートするにはLoadWorkSheetsFromDataSet()を使用し、シートとテーブルを自動的にマッピングしてワークブックをデータセットとしてエクスポートするにはToDataSet()を使用します。

データセットは、複数の関連テーブル、リレーションシップ、制約を含むデータのインメモリ表現です。 データベース、XML、その他のソースからのデータを扱うために使用されます。 C#でExcelファイルを扱う場合DataSetは、データ駆動型アプリケーションと統合する.NETでおなじみの構造を提供します。

DataTableは、DataSet内の行と列を持つ単一のテーブルを表します。 IronXLはエクセルの各ワークシートを対応するDataTableに自動的にマッピングし、変換時に列見出しとデータ型を保持します。

クイックスタート: ワークブックを System.Data.DataSet として即座にエクスポート

ワークブックをデータセットに変換するには、1回のメソッド呼び出しが必要です。 この例では、ToDataSetを使用して、ワークブック全体、つまり各シートをDataTableとしてエクスポートします。

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronXL をインストールします

    PM > Install-Package IronXL.Excel

  2. このコード スニペットをコピーして実行します。

    DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true);
  3. 実際の環境でテストするためにデプロイする

    今すぐ無料トライアルでプロジェクトに IronXL を使い始めましょう
    arrow pointer


IronXLを使い始める

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

最初のステップ:
green arrow pointer


データセットをワークブックに読み込むには?

静的な LoadWorkSheetsFromDataSet<//code> メソッドを使用して、ワークブックに DataSet<//code> をインポートします。 このメソッドは、DataSetWorkbookオブジェクトの両方を必要とします。 まず、Createメソッドを使用してワークブックを作成します。 メソッドにDataSetオブジェクトとworkbookオブジェクトを渡します。

:path=/static-assets/excel-content-code-examples/how-to/export-dataset-datatable-load.cs
// このコードスニペットは利用できません!
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

DataSet内の各DataTableは、個別のワークシートになります。 テーブル名はワークシート名となり、データ構成を維持します。 複数のデータソースについては、新しいスプレッドシートの作成または既存のワークシートの管理と組み合わせてください。

複数のテーブルを持つデータセットをロードする包括的な例を示します:

using IronXL;
using System.Data;

// Create a DataSet with multiple tables
DataSet salesData = new DataSet("CompanySales");

// Create and populate a products table
DataTable productsTable = new DataTable("Products");
productsTable.Columns.Add("ProductID", typeof(int));
productsTable.Columns.Add("ProductName", typeof(string));
productsTable.Columns.Add("Price", typeof(decimal));

// Add sample data
productsTable.Rows.Add(1, "Laptop", 999.99m);
productsTable.Rows.Add(2, "Mouse", 19.99m);
productsTable.Rows.Add(3, "Keyboard", 49.99m);

// Create and populate a sales table
DataTable salesTable = new DataTable("Sales");
salesTable.Columns.Add("SaleID", typeof(int));
salesTable.Columns.Add("ProductID", typeof(int));
salesTable.Columns.Add("Quantity", typeof(int));
salesTable.Columns.Add("Date", typeof(DateTime));

// Add sample sales data
salesTable.Rows.Add(1, 1, 5, DateTime.Now);
salesTable.Rows.Add(2, 2, 25, DateTime.Now.AddDays(-1));
salesTable.Rows.Add(3, 3, 10, DateTime.Now.AddDays(-2));

// Add tables to DataSet
salesData.Tables.Add(productsTable);
salesData.Tables.Add(salesTable);

// Create workbook and load DataSet
WorkBook workBook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(salesData, workBook);

// Save the workbook with all imported data
workBook.SaveAs("SalesReport.xlsx");
using IronXL;
using System.Data;

// Create a DataSet with multiple tables
DataSet salesData = new DataSet("CompanySales");

// Create and populate a products table
DataTable productsTable = new DataTable("Products");
productsTable.Columns.Add("ProductID", typeof(int));
productsTable.Columns.Add("ProductName", typeof(string));
productsTable.Columns.Add("Price", typeof(decimal));

// Add sample data
productsTable.Rows.Add(1, "Laptop", 999.99m);
productsTable.Rows.Add(2, "Mouse", 19.99m);
productsTable.Rows.Add(3, "Keyboard", 49.99m);

// Create and populate a sales table
DataTable salesTable = new DataTable("Sales");
salesTable.Columns.Add("SaleID", typeof(int));
salesTable.Columns.Add("ProductID", typeof(int));
salesTable.Columns.Add("Quantity", typeof(int));
salesTable.Columns.Add("Date", typeof(DateTime));

// Add sample sales data
salesTable.Rows.Add(1, 1, 5, DateTime.Now);
salesTable.Rows.Add(2, 2, 25, DateTime.Now.AddDays(-1));
salesTable.Rows.Add(3, 3, 10, DateTime.Now.AddDays(-2));

// Add tables to DataSet
salesData.Tables.Add(productsTable);
salesData.Tables.Add(salesTable);

// Create workbook and load DataSet
WorkBook workBook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(salesData, workBook);

// Save the workbook with all imported data
workBook.SaveAs("SalesReport.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このアプローチは、SQLデータベースからデータをエクスポートするときや、複数のソースからExcel形式にデータを統合するときに効果的です。

さまざまなファイル形式からのスプレッドシートのインポートについては、既存のスプレッドシートの読み込み方法をご覧ください。


ワークブックをデータセットとしてエクスポートするには?

ToDataSetメソッドは、ワークブックをSystem.DataSetに変換し、各ワークシートはSystem.Data.DataTableになります。 Excelワークブック上でこのメソッドを呼び出し、それをDataSetオブジェクトに変換します。 useFirstRowAsColumnNamesパラメータは、最初の行を列名として使用するかどうかを決定します。

:path=/static-assets/excel-content-code-examples/how-to/export-dataset-datatable-export.cs
// このコードスニペットは利用できません!
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronXLはデータセットにエクスポートする際、データ型の変換を自動的に行い、スプレッドシートの構造を維持します。 ExcelデータをSQLデータベースと統合するときや、他の.NETアプリケーションでデータを使用するときに役立ちます。

ワークブックのエクスポートとデータセットの処理を示す高度な例:

using IronXL;
using System;
using System.Data;

// Load an existing Excel file
WorkBook workBook = WorkBook.Load("FinancialData.xlsx");

// Export to DataSet with column headers from first row
DataSet financialDataSet = workBook.ToDataSet(useFirstRowAsColumnNames: true);

// Process each DataTable in the DataSet
foreach (DataTable table in financialDataSet.Tables)
{
    Console.WriteLine($"Processing table: {table.TableName}");
    Console.WriteLine($"Columns: {table.Columns.Count}, Rows: {table.Rows.Count}");

    // Iterate through columns
    foreach (DataColumn column in table.Columns)
    {
        Console.WriteLine($"  Column: {column.ColumnName} ({column.DataType})");
    }

    // Process first 5 rows as example
    int rowCount = 0;
    foreach (DataRow row in table.Rows)
    {
        if (rowCount++ >= 5) break;

        // Access data by column name
        foreach (DataColumn col in table.Columns)
        {
            Console.WriteLine($"    {col.ColumnName}: {row[col]}");
        }
    }
}

// You can also export specific worksheets as DataTables
WorkSheet specificSheet = workBook.WorkSheets["Q1Sales"];
DataTable q1Data = specificSheet.ToDataTable(useFirstRowAsColumnNames: true);

// Use the DataTable with other .NET components
// For example, bind to a DataGridView or save to database
using IronXL;
using System;
using System.Data;

// Load an existing Excel file
WorkBook workBook = WorkBook.Load("FinancialData.xlsx");

// Export to DataSet with column headers from first row
DataSet financialDataSet = workBook.ToDataSet(useFirstRowAsColumnNames: true);

// Process each DataTable in the DataSet
foreach (DataTable table in financialDataSet.Tables)
{
    Console.WriteLine($"Processing table: {table.TableName}");
    Console.WriteLine($"Columns: {table.Columns.Count}, Rows: {table.Rows.Count}");

    // Iterate through columns
    foreach (DataColumn column in table.Columns)
    {
        Console.WriteLine($"  Column: {column.ColumnName} ({column.DataType})");
    }

    // Process first 5 rows as example
    int rowCount = 0;
    foreach (DataRow row in table.Rows)
    {
        if (rowCount++ >= 5) break;

        // Access data by column name
        foreach (DataColumn col in table.Columns)
        {
            Console.WriteLine($"    {col.ColumnName}: {row[col]}");
        }
    }
}

// You can also export specific worksheets as DataTables
WorkSheet specificSheet = workBook.WorkSheets["Q1Sales"];
DataTable q1Data = specificSheet.ToDataTable(useFirstRowAsColumnNames: true);

// Use the DataTable with other .NET components
// For example, bind to a DataGridView or save to database
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

エクスポートされた DataSet は、Excel で定義されたリレーションシップと制約を維持するので、Excel Interop に依存せずに複雑な Excel データ構造を扱うのに最適です。

データセット/データテーブルの追加機能

IronXLはDataSetDataTableを扱うときに高度な機能を提供します:

データ型の取り扱い

IronXLはExcel-DataSet変換時にデータ型をインテリジェントにマッピングします。 数値のセルは適切な数値型(int, decimal, double)に、日付のセルはDateTimeオブジェクトに、テキストのセルはstringになります。 変換前にセルのデータ形式を設定することでカスタマイズしてください。

パフォーマンス最適化

IronXLは大規模データセットのメモリ使用量と処理速度を最適化します。 このライブラリは、すべてをメモリにロードするのではなく、データを効率的にストリームします。 大量のデータを処理するエンタープライズ・アプリケーションに適しています。

他の機能との統合

DataSet/DataTable機能はIronXLの他の機能と統合されています:

  • 数式と計算を適用してから、データセットにエクスポートします。
  • 条件付き書式を使用して、変換前にデータを強調表示します。
  • チャート作成と組み合わせて、視覚的なレポートを作成します。

How to Save or Export Spreadsheets を参照して、スプレッドシートのさまざまなファイル形式へのエクスポートについて学んでください。

よくある質問

C#でExcelワークブックをDataSetに変換するにはどうすればよいですか?

IronXLでは、ToDataSet()メソッドを使ってExcelワークブックをデータセットに変換することができます。WorkBook.ToDataSet(useFirstRowAsColumnNames:)を呼び出すだけで、各シートが結果のDataSetのDataTableになるワークブック全体をエクスポートできます。

プログラムによってExcelワークブックにデータセットをインポートできますか?

はい、IronXLはデータセットをワークブックにインポートするためのLoadWorkSheetsFromDataSet()メソッドを提供しています。WorkBook.Create()を使用してワークブックを作成し、DataSetとワークブックの両方をこの静的メソッドに渡します。各データ・テーブルは個別のワークシートになります。

Excelにインポートすると、DataTable名はどうなりますか?

IronXLのLoadWorkSheetsFromDataSet()メソッドを使用すると、各DataTable名は自動的にExcelのワークシート名になります。

このライブラリは、DataSetの変換時にカラムヘッダを保持しますか?

はい、IronXLはExcelとDataSet間の変換時に列ヘッダーとデータ型を保持します。useFirstRowAsColumnNamesをtrueに設定してToDataSet()を使用すると、各ワークシートの最初の行が列ヘッダーとして認識されます。

ExcelとDataSetsの間で変換する場合、複数のテーブルはどのように扱われますか?

IronXLはDataSetに変換する際、Excelの各ワークシートを対応するDataTableに自動的にマッピングします。複数のテーブルを持つDataSetをインポートする場合、各DataTableはワークブック内に個別のワークシートを作成します。

ExcelをDataSetにエクスポートするために必要な最小限のコードは何ですか?

IronXLを使ってExcelワークブックをDataSetにエクスポートする最小のコードはたった1行です:DataSet ds = WorkBook.Create().ToDataSet(useFirstRowAsColumnNames: true); これでワークブック全体がシートからテーブルへの自動マッピングで変換されます。

Chaknith Bin
ソフトウェアエンジニア
ChaknithはIronXLとIronBarcodeに取り組んでいます。彼はC#と.NETの深い専門知識を持ち、ソフトウェアの改善や顧客サポートに貢献しています。ユーザーとの対話から得られる洞察が、より良い製品、ドキュメント、および全体的な経験に寄与しています。
準備はできましたか?
Nuget ダウンロード 1,765,830 | バージョン: 2025.12 リリース