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

IronXLを使用して Excel ファイルを DataTable にインポートする

C# IronXLを使用して Excel ファイルを DataTable にインポートする

Excelファイルを手動で解析することが、開発者にとって一日の楽しみになることはめったにないというのは周知の事実だ。 誰もが経験したことがあるでしょう。古いOLEDB接続文字列と格闘したり、構造化されていないスプレッドシートデータを.NETアプリケーションが理解できる形式にマッピングしようとしたり。

C# の DataTable は、まさに平等化装置です。 これは完璧な橋渡し役を果たし、行と列をLINQクエリ、DataGridバインディング、またはSQLデータベースへの迅速なアクセスに適した馴染みのある構造に変換します。

IronXLはこのプロセスにおける面倒な作業をすべて引き受けてくれます。 複雑な設定を行う代わりに、単一の直感的なToDataTableメソッドを使用して変換を処理します。 レポート作成ツールを作成する場合でも、データ移行スクリプトを作成する場合でも、Excelデータを簡単にインポートする方法をご紹介します。

一緒にやってみたいですか? IronXLの無料トライアルを利用して、この強力なライブラリをぜひご自身でお試しください。

C# で Excel ファイルを DataTable にインポートするにはどうすればよいですか?

C# で Excel ファイルを DataTable にインポートするには、WorkBook.Load を使用してワークブックを読み込み、対象のワークシートにアクセスして、ToDataTable メソッドを呼び出します。 この方法は、XLSX、XLS、XLSM、およびCSV形式のファイルに対応しています。 必要なクラスにアクセスするには、以下の名前空間を参照するようにしてください。

Visual StudioでNuGetパッケージマネージャーを使用して、以下のコマンドを実行してIronXLをインストールします。

Install-Package IronXl.Excel

次に、以下の簡潔なコードスニペットを使用してデータを移動させます。

using IronXL;
using System;
using System.Data;
class Program
{
    static void Main(string[] args)
    {
        // Load the Excel file from the specified path
        string filePath = "sales-data.xlsx";
        WorkBook workbook = WorkBook.Load(filePath);
        // Access the first worksheet in the workbook
        WorkSheet worksheet = workbook.DefaultWorkSheet;
        // Convert worksheet to DataTable with first row as column headers
        DataTable dt = worksheet.ToDataTable(true);
        // Display the imported data
        foreach (DataRow row in dt.Rows)
        {
            Console.WriteLine(string.Join(" | ", row.ItemArray));
        }
    }
}
using IronXL;
using System;
using System.Data;
class Program
{
    static void Main(string[] args)
    {
        // Load the Excel file from the specified path
        string filePath = "sales-data.xlsx";
        WorkBook workbook = WorkBook.Load(filePath);
        // Access the first worksheet in the workbook
        WorkSheet worksheet = workbook.DefaultWorkSheet;
        // Convert worksheet to DataTable with first row as column headers
        DataTable dt = worksheet.ToDataTable(true);
        // Display the imported data
        foreach (DataRow row in dt.Rows)
        {
            Console.WriteLine(string.Join(" | ", row.ItemArray));
        }
    }
}
Imports IronXL
Imports System
Imports System.Data

Module Program
    Sub Main(args As String())
        ' Load the Excel file from the specified path
        Dim filePath As String = "sales-data.xlsx"
        Dim workbook As WorkBook = WorkBook.Load(filePath)
        ' Access the first worksheet in the workbook
        Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
        ' Convert worksheet to DataTable with first row as column headers
        Dim dt As DataTable = worksheet.ToDataTable(True)
        ' Display the imported data
        For Each row As DataRow In dt.Rows
            Console.WriteLine(String.Join(" | ", row.ItemArray))
        Next
    End Sub
End Module
$vbLabelText   $csharpLabel

出力

 IronXLを使用して Excel ファイルを DataTable にインポートする : 画像 1 - Excel ファイルが DataTable にインポートされました

WorkBook.Load メソッドは、文字列 filePath で指定された場所から Excel ファイルを読み込み、すべての Excel シートデータを含むワークブック オブジェクトを作成します。 ToDataTable(true) パラメータは、最初の行に列ヘッダーが含まれていることを示し、それらは自動的にデータテーブルの列名として使用されます。

Excelファイルのデータをデータテーブルに読み込むための最適な方法は何ですか?

Excelファイルの内容を効率的に読み込むには、ヘッダー行と生データの両方を処理する必要がある。 IronXLのToDataTableメソッドは、最初の行を列名として扱うかデータとして扱うかを決定するブール型のパラメータを受け取ります。 拡張プロパティの処理や複雑なセル型の変換には追加の設定が必要になる場合がありますが、デフォルトの方法でほとんどのケースを確実に処理できます。

using IronXL;
using System.Data;
// Load workbook from file path
string filePath = @"C:\Data\inventory.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.WorkSheets[0];
// First row as headers (true) or as data (false)
DataTable dataTableWithHeaders = worksheet.ToDataTable(true);
DataTable dataTableWithoutHeaders = worksheet.ToDataTable(false);
// Process each row in the DataTable
foreach (DataRow row in dataTableWithHeaders.Rows)
{
    for (int i = 0; i < dataTableWithHeaders.Columns.Count; i++)
    {
        object value = row[i];
        Console.Write($"{value}\t");
    }
    Console.WriteLine();
}
using IronXL;
using System.Data;
// Load workbook from file path
string filePath = @"C:\Data\inventory.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.WorkSheets[0];
// First row as headers (true) or as data (false)
DataTable dataTableWithHeaders = worksheet.ToDataTable(true);
DataTable dataTableWithoutHeaders = worksheet.ToDataTable(false);
// Process each row in the DataTable
foreach (DataRow row in dataTableWithHeaders.Rows)
{
    for (int i = 0; i < dataTableWithHeaders.Columns.Count; i++)
    {
        object value = row[i];
        Console.Write($"{value}\t");
    }
    Console.WriteLine();
}
Imports IronXL
Imports System.Data

' Load workbook from file path
Dim filePath As String = "C:\Data\inventory.xlsx"
Dim workbook As WorkBook = WorkBook.Load(filePath)
Dim worksheet As WorkSheet = workbook.WorkSheets(0)

' First row as headers (true) or as data (false)
Dim dataTableWithHeaders As DataTable = worksheet.ToDataTable(True)
Dim dataTableWithoutHeaders As DataTable = worksheet.ToDataTable(False)

' Process each row in the DataTable
For Each row As DataRow In dataTableWithHeaders.Rows
    For i As Integer = 0 To dataTableWithHeaders.Columns.Count - 1
        Dim value As Object = row(i)
        Console.Write($"{value}" & vbTab)
    Next
    Console.WriteLine()
Next
$vbLabelText   $csharpLabel

出力

 IronXLを使用して Excel ファイルを DataTable にインポートする : 画像 2 - Excel ファイルを DataTable にインポートして読み込む出力

この柔軟性により、 IronXLは構造に関係なくExcelスプレッドシートファイルを処理するのに最適です。 EPPlusパッケージや、新しいOleDbDataAdapterインスタンスを必要とする従来の方法とは異なり、 IronXLは単一のメソッド呼び出しで変換を処理します。 このライブラリは、.NET Core、 .NET Frameworkをサポートしており、Microsoft Excelのインストールを必要とせずにクロスプラットフォーム展開が可能です。

複数のExcelワークシートをデータセットに変換するにはどうすればよいですか?

Excel ブックに複数のシートが含まれている場合、DataSet に変換すると、各 Excel ワークシートがコレクション内の個別の DataTable として保持されます。 この手法は、レポート作成アプリケーションや複数シートのデータ処理に不可欠です。

using IronXL;
using System;
using System.Data;
// Load multi-sheet workbook
WorkBook workbook = WorkBook.Load("quarterly-reports.xlsx");
// Convert entire workbook to DataSet (each sheet becomes a DataTable)
DataSet dataset = workbook.ToDataSet();
// Iterate through all tables in the DataSet
foreach (DataTable table in dataset.Tables)
{
    Console.WriteLine($"Sheet: {table.TableName}");
    Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}");
    foreach (DataRow row in table.Rows)
    {
        Console.WriteLine(string.Join(", ", row.ItemArray));
    }
}
using IronXL;
using System;
using System.Data;
// Load multi-sheet workbook
WorkBook workbook = WorkBook.Load("quarterly-reports.xlsx");
// Convert entire workbook to DataSet (each sheet becomes a DataTable)
DataSet dataset = workbook.ToDataSet();
// Iterate through all tables in the DataSet
foreach (DataTable table in dataset.Tables)
{
    Console.WriteLine($"Sheet: {table.TableName}");
    Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}");
    foreach (DataRow row in table.Rows)
    {
        Console.WriteLine(string.Join(", ", row.ItemArray));
    }
}
Imports IronXL
Imports System
Imports System.Data

' Load multi-sheet workbook
Dim workbook As WorkBook = WorkBook.Load("quarterly-reports.xlsx")
' Convert entire workbook to DataSet (each sheet becomes a DataTable)
Dim dataset As DataSet = workbook.ToDataSet()
' Iterate through all tables in the DataSet
For Each table As DataTable In dataset.Tables
    Console.WriteLine($"Sheet: {table.TableName}")
    Console.WriteLine($"Rows: {table.Rows.Count}, Columns: {table.Columns.Count}")
    For Each row As DataRow In table.Rows
        Console.WriteLine(String.Join(", ", row.ItemArray))
    Next
Next
$vbLabelText   $csharpLabel

出力

 IronXLを使用して Excel ファイルを DataTable にインポートする : 画像 3 - 複数シートの Excel ファイルを DataSet にインポートしたときの出力

ToDataSet メソッドは、ワークシートごとに DataTable オブジェクトを含む新しい DataSet を作成します。 各テーブルの TableName プロパティには元の Excel シート名が反映されるため、処理中に特定のデータを簡単に参照できます。

Excelからデータベースにデータをインポートするにはどうすればよいですか?

一般的なワークフローとしては、Excelファイルのデータを読み込み、データベースシステムに挿入するという流れがある。 DataTable構造は、データベース操作においてADO.NETとシームレスに統合されます。

using IronXL;
using System.Data;
using System.Data.SqlClient;
string filePath = @"C:\imports\customer-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert Excel data to DataTable
DataTable dt = worksheet.ToDataTable(true);
// Validate data before database insert
if (dt == null || dt.Rows.Count == 0)
{
    Console.WriteLine("No data to import");
    return;
}
// Insert into database using SqlBulkCopy
string connectionString = "Server=.;Database=Sales;Trusted_Connection=True;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
    {
        bulkCopy.DestinationTableName = "Customers";
        bulkCopy.WriteToServer(dt);
    }
}
Console.WriteLine($"Imported {dt.Rows.Count} records successfully");
using IronXL;
using System.Data;
using System.Data.SqlClient;
string filePath = @"C:\imports\customer-data.xlsx";
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert Excel data to DataTable
DataTable dt = worksheet.ToDataTable(true);
// Validate data before database insert
if (dt == null || dt.Rows.Count == 0)
{
    Console.WriteLine("No data to import");
    return;
}
// Insert into database using SqlBulkCopy
string connectionString = "Server=.;Database=Sales;Trusted_Connection=True;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
    {
        bulkCopy.DestinationTableName = "Customers";
        bulkCopy.WriteToServer(dt);
    }
}
Console.WriteLine($"Imported {dt.Rows.Count} records successfully");
Imports IronXL
Imports System.Data
Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim filePath As String = "C:\imports\customer-data.xlsx"
        Dim workbook As WorkBook = WorkBook.Load(filePath)
        Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
        ' Convert Excel data to DataTable
        Dim dt As DataTable = worksheet.ToDataTable(True)
        ' Validate data before database insert
        If dt Is Nothing OrElse dt.Rows.Count = 0 Then
            Console.WriteLine("No data to import")
            Return
        End If
        ' Insert into database using SqlBulkCopy
        Dim connectionString As String = "Server=.;Database=Sales;Trusted_Connection=True;"
        Using connection As New SqlConnection(connectionString)
            connection.Open()
            Using bulkCopy As New SqlBulkCopy(connection)
                bulkCopy.DestinationTableName = "Customers"
                bulkCopy.WriteToServer(dt)
            End Using
        End Using
        Console.WriteLine($"Imported {dt.Rows.Count} records successfully")
    End Sub
End Module
$vbLabelText   $csharpLabel

このコードは、Excelファイルを読み込み、それをDataTableに変換し、データベースに一括挿入する方法を示しています。 nullチェックは、インポート操作を実行する前にデータの整合性を確保します。

データテーブルをExcelにエクスポートするにはどうすればよいですか?

IronXLは双方向のデータフローをサポートしており、DataTableオブジェクトからExcelファイルを作成して、レポート作成やデータエクスポートに利用できます。

using IronXL;
using System.Data;
// Create sample DataTable
DataTable dt = new DataTable("Products");
dt.Columns.Add("ProductID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Rows.Add(1, "Widget", 29.99m);
dt.Rows.Add(2, "Gadget", 49.99m);
// Create new workbook and load DataTable
WorkBook workbook = WorkBook.Create();
workbook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } });
// Save as Excel file
workbook.SaveAs("exported-products.xlsx");
using IronXL;
using System.Data;
// Create sample DataTable
DataTable dt = new DataTable("Products");
dt.Columns.Add("ProductID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Rows.Add(1, "Widget", 29.99m);
dt.Rows.Add(2, "Gadget", 49.99m);
// Create new workbook and load DataTable
WorkBook workbook = WorkBook.Create();
workbook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } });
// Save as Excel file
workbook.SaveAs("exported-products.xlsx");
Imports IronXL
Imports System.Data

' Create sample DataTable
Dim dt As New DataTable("Products")
dt.Columns.Add("ProductID", GetType(Integer))
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Price", GetType(Decimal))
dt.Rows.Add(1, "Widget", 29.99D)
dt.Rows.Add(2, "Gadget", 49.99D)

' Create new workbook and load DataTable
Dim workbook As WorkBook = WorkBook.Create()
workbook.LoadWorkSheetsFromDataSet(New DataSet With {.Tables = {dt}})

' Save as Excel file
workbook.SaveAs("exported-products.xlsx")
$vbLabelText   $csharpLabel

出力

 IronXLを使用して Excel ファイルを DataTable にインポートする : 画像 4 - Excel にエクスポートされた DataTable

LoadWorkSheetsFromDataSet メソッドは、DataTable オブジェクトを含む DataSet を受け取り、対応するワークシートを作成します。 DataTableをExcelにエクスポートする方法については、ドキュメントをご覧ください。

結論

IronXLは、Excelからデータテーブルへの変換の複雑さを、分かりやすいメソッド呼び出しに変換します。 単一のExcelワークシートをインポートする場合でも、複数のシートを含むワークブックを完全なデータセットに処理する場合でも、このライブラリはXLSXファイル、データ型の変換、およびストリームベースの読み込みを効率的に処理します。

DataTableの柔軟性とIronXLの直感的なAPIの組み合わせにより、データベース統合、レポートシステム、アプリケーションデータバインディングのための強力なデータワークフローが実現します。 IronXLをダウンロードしてExcelデータの処理を効率化するか、本番環境への導入用にライセンスをご購入ください

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

よくある質問

C# を使用して Excel ファイルを DataTable にインポートするにはどうすればよいですか?

IronXLを使用すると、C#でExcelファイルをDataTableに簡単にインポートできます。IronXLは、Excelファイルを読み込み、DataTableに変換してさらに操作するためのシンプルなAPIを提供します。

C# での Excel ファイル操作に IronXL を使用する利点は何ですか?

IronXLは、Excelファイルの読み込み、書き込み、そしてDataTablesなどの様々な形式への変換など、C#でExcelファイルを操作するための堅牢なソリューションを提供します。主要なExcelファイル形式をすべてサポートし、高いパフォーマンスと使いやすさを実現します。

IronXLは.NET Coreに対応していますか?

はい、 IronXL は.NET Coreと完全に互換性があり、Excel ファイルの操作を必要とするアプリケーションのクロスプラットフォーム開発と展開を可能にします。

IronXL を使用して、さまざまな形式の Excel ファイルを読み取ることはできますか?

IronXL は、XLSX、XLS、CSV、TSV などさまざまな形式の Excel ファイルの読み取りをサポートしており、さまざまな種類の Excel データを柔軟に処理できます。

IronXL はExcel ファイルのセキュリティ機能をサポートしていますか?

はい、 IronXL はパスワードで保護された Excel ファイルをサポートしているため、C# アプリケーションでセキュリティ保護された Excel ドキュメントを読み込んで操作できます。

IronXLを使用して Excel ファイルを DataTable に変換するにはどうすればよいですか?

IronXL を使用すると、ワークブックを読み込み、ワークシートを選択し、組み込みメソッドを使用してワークシート データを DataTable にエクスポートすることで、Excel ファイルを DataTable に変換できます。

IronXL を使用するとどのような種類のアプリケーションがメリットを得られますか?

IronXL は、データ分析ツール、レポート システム、Excel データのインポート、エクスポート、変更が必要なソフトウェアなど、Excel データの操作を必要とするあらゆるアプリケーションに最適です。

Excel ファイルを DataTable にインポートした後、 IronXL を使用して編集できますか?

はい、 IronXL、Excel ファイルを DataTable にインポートした後でも編集および更新できるため、変更内容の変更と保存をシームレスに行うことができます。

IronXLを使用するにはどの程度のレベルのコーディング経験が必要ですか?

IronXLは使いやすさを重視して設計されており、あらゆる経験レベルの開発者が利用できるユーザーフレンドリーな API を備えているため、初心者から上級者まで誰でも利用できます。

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

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

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

アイアンサポートチーム

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