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

C# での DataTable のインポートおよびエクスポート方法

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

IronXLは、単一のメソッド呼び出しでExcelワークブックとDataSetとしてエクスポートします。

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

DataTable は、DataSet 内に含まれる行と列からなる単一の表を表します。 IronXLは、各Excelワークシートを対応するDataTableに自動的にマッピングし、変換時に列ヘッダーとデータ型を保持します。

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

ワークブックを DataSet に変換するには、1回のメソッド呼び出しで済みます。 この例では、DataTable を使用してワークブック全体(各シートを ToDataSet として)をエクスポートします。この際、最初の行のヘッダー認識はオプションです。

  1. IronXL をNuGetパッケージマネージャでインストール

    PM > Install-Package IronXL.Excel
  2. このコード スニペットをコピーして実行します。

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

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

    arrow pointer

DataSet をワークブックに読み込むにはどうすればよいですか?

LoadWorkSheetsFromDataSet メソッドを使用して、DataSet をワークブックにインポートします。 このメソッドには、DataSet オブジェクトと Workbook オブジェクトの両方が必要です。 また、DataSet を通じてオプション設定を受け付けます。 まず、Create メソッドを使用してワークブックを作成してください。 DataSet オブジェクトと workbook オブジェクトをメソッドに渡します。

:path=/static-assets/excel/content-code-examples/how-to/export-dataset-datatable-load.cs
using IronXL;
using System.Data;

// Create dataset
DataSet dataSet = new DataSet();

// Create workbook
WorkBook workBook = WorkBook.Create();

// Load DataSet to workBook
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
Imports IronXL
Imports System.Data

' Create dataset
Private dataSet As New DataSet()

' Create workbook
Private workBook As WorkBook = WorkBook.Create()

' Load DataSet to workBook
WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook)
$vbLabelText   $csharpLabel

DataTable 内の各 DataSet は、個別のワークシートになります。 表の名前はワークシート名となり、データの構成が維持されます。 複数のデータソースがある場合は、新しいスプレッドシートの作成既存のワークシートの管理と組み合わせて使用してください。

以下は、複数のテーブルを含む DataSet を読み込む包括的な例です:

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.Co/lumns.Add("ProductID", typeof(int));
productsTable.Co/lumns.Add("ProductName", typeof(string));
productsTable.Co/lumns.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.Co/lumns.Add("SaleID", typeof(int));
salesTable.Co/lumns.Add("ProductID", typeof(int));
salesTable.Co/lumns.Add("Quantity", typeof(int));
salesTable.Co/lumns.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.Co/lumns.Add("ProductID", typeof(int));
productsTable.Co/lumns.Add("ProductName", typeof(string));
productsTable.Co/lumns.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.Co/lumns.Add("SaleID", typeof(int));
salesTable.Co/lumns.Add("ProductID", typeof(int));
salesTable.Co/lumns.Add("Quantity", typeof(int));
salesTable.Co/lumns.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");
Imports IronXL
Imports System.Data

' Create a DataSet with multiple tables
Dim salesData As New DataSet("CompanySales")

' Create and populate a products table
Dim productsTable As New DataTable("Products")
productsTable.Columns.Add("ProductID", GetType(Integer))
productsTable.Columns.Add("ProductName", GetType(String))
productsTable.Columns.Add("Price", GetType(Decimal))

' Add sample data
productsTable.Rows.Add(1, "Laptop", 999.99D)
productsTable.Rows.Add(2, "Mouse", 19.99D)
productsTable.Rows.Add(3, "Keyboard", 49.99D)

' Create and populate a sales table
Dim salesTable As New DataTable("Sales")
salesTable.Columns.Add("SaleID", GetType(Integer))
salesTable.Columns.Add("ProductID", GetType(Integer))
salesTable.Columns.Add("Quantity", GetType(Integer))
salesTable.Columns.Add("Date", GetType(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
Dim workBook As WorkBook = WorkBook.Create()
WorkBook.LoadWorkSheetsFromDataSet(salesData, workBook)

' Save the workbook with all imported data
workBook.SaveAs("SalesReport.xlsx")
$vbLabelText   $csharpLabel

このアプローチは、SQLデータベースからデータをエクスポートしたり、複数のソースからのデータをExcel形式に統合したりする際に有効です。

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


ワークブックを DataSet としてエクスポートするにはどうすればよいですか?

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

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

IronXLは、DataSetsへのエクスポート時にデータ型の変換を自動的に処理し、スプレッドシートの構造を維持します。 これは、ExcelデータをSQLデータベースと統合したり、他 for .NETアプリケーションでデータを利用したりする際に役立ちます。

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

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.Co/lumns.Count}, Rows: {table.Rows.Co/unt}");

    // Iterate through columns
    foreach (DataColumn column in table.Co/lumns)
    {
        Console.WriteLine($"  Column: {column.Co/lumnName} ({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.Co/lumns)
        {
            Console.WriteLine($"    {col.Co/lumnName}: {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.Co/lumns.Count}, Rows: {table.Rows.Co/unt}");

    // Iterate through columns
    foreach (DataColumn column in table.Co/lumns)
    {
        Console.WriteLine($"  Column: {column.Co/lumnName} ({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.Co/lumns)
        {
            Console.WriteLine($"    {col.Co/lumnName}: {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
Imports IronXL
Imports System
Imports System.Data

' Load an existing Excel file
Dim workBook As WorkBook = WorkBook.Load("FinancialData.xlsx")

' Export to DataSet with column headers from first row
Dim financialDataSet As DataSet = workBook.ToDataSet(useFirstRowAsColumnNames:=True)

' Process each DataTable in the DataSet
For Each table As DataTable In financialDataSet.Tables
    Console.WriteLine($"Processing table: {table.TableName}")
    Console.WriteLine($"Columns: {table.Columns.Count}, Rows: {table.Rows.Count}")

    ' Iterate through columns
    For Each column As DataColumn In table.Columns
        Console.WriteLine($"  Column: {column.ColumnName} ({column.DataType})")
    Next

    ' Process first 5 rows as example
    Dim rowCount As Integer = 0
    For Each row As DataRow In table.Rows
        If rowCount >= 5 Then Exit For
        rowCount += 1

        ' Access data by column name
        For Each col As DataColumn In table.Columns
            Console.WriteLine($"    {col.ColumnName}: {row(col)}")
        Next
    Next
Next

' You can also export specific worksheets as DataTables
Dim specificSheet As WorkSheet = workBook.WorkSheets("Q1Sales")
Dim q1Data As DataTable = specificSheet.ToDataTable(useFirstRowAsColumnNames:=True)

' Use the DataTable with other .NET components
' For example, bind to a DataGridView or save to database
$vbLabelText   $csharpLabel

エクスポートされた DataSet は、Excel で定義された関係性と制約を維持するため、Excel Interop に依存することなく、複雑な Excel データ構造を扱うのに最適です。

DataSet/DataTablesの追加機能

IronXLは、DataTableを扱う際に高度な機能を提供します:

データ型の取り扱い

IronXLは、ExcelとDataSet間の変換時にデータ型をインテリジェントにマッピングします。 数値セルは適切な数値型(Stringに変換されます。 変換前にセルのデータ形式を設定して、これをカスタマイズしてください。

パフォーマンスの最適化

IronXLは、大規模なデータセットに対してメモリ使用量と処理速度を最適化します。 このライブラリは、すべてのデータをメモリに読み込むのではなく、効率的にデータをストリーミングします。 大規模なデータ量を処理するEnterpriseアプリケーションに適しています。

他の機能との連携

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

  • DataSet へのエクスポート前に数式や計算を適用してください
  • 変換前に、条件付き書式設定を使用してデータを強調表示してください
  • 視覚的なレポート作成のためのチャート作成機能と組み合わせる
  • int を使用したカスタムシリアライゼーションをサポート
  • decimal を通じてデータ検証ルールを含める
  • 欠落値は double で処理してください
  • DateTime を使用してワークシートのメタデータを管理する
  • string を使用してセルの書式設定タイプを維持してください

スプレッドシートをさまざまなファイル形式にエクスポートする方法については、"スプレッドシートの保存またはエクスポート方法"をご覧ください。

よくある質問

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); これでワークブック全体がシートからテーブルへの自動マッピングで変換されます。

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

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

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

準備はできましたか?
Nuget ダウンロード 2,052,917 | バージョン: 2026.6 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronXL.Excel
サンプルを実行する あなたのデータがスプレッドシートになるのを見る。