
IronXLを使用して Excel ファイルを DataTable にインポートする
C# IronXLを使用して Excel ファイルを DataTable にインポートする
Excelファイルを手動で解析することが、開発者にとって一日の楽しみになることはめったにないというのは周知の事実だ。 誰もが経験したことがあるでしょう。古いOLEDB接続文字列と格闘したり、構造化されていないスプレッドシートデータを.NETアプリケーションが理解できる形式にマッピングしようとしたり。
C# の DataTable は、まさに平等化装置です。 これは完璧な橋渡し役を果たし、行と列をLINQクエリ、DataGridバインディング、またはSQLデータベースへの迅速なアクセスに適した馴染みのある構造に変換します。
IronXLはこのプロセスにおける面倒な作業をすべて引き受けてくれます。 複雑な設定を行う代わりに、単一の直感的なToDataTableメソッドを使用して変換を処理します。 レポート作成ツールを作成する場合でも、データ移行スクリプトを作成する場合でも、Excelデータを簡単にインポートする方法をご紹介します。
一緒にやってみたいですか? IronXLの無料トライアルを利用して、この強力なライブラリをぜひご自身でお試しください。
How Can You Import an Excel File into a DataTable in C#?
C# で Excel ファイルを DataTable にインポートするには、WorkBook.Load を使用してワークブックを読み込み、対象のワークシートにアクセスして、ToDataTable メソッドを呼び出します。 この方法は、XLSX、XLS、XLSM、およびCSV形式のファイルに対応しています。 必要なクラスにアクセスするには、以下の名前空間を参照するようにしてください。
Visual StudioでNuGetパッケージマネージャーを使用して、以下のコマンドを実行してIronXLをインストールします。
次に、以下の簡潔なコードスニペットを使用してデータを移動させます。
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出力

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

この柔軟性により、 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));
}
}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出力

ToDataSet メソッドは、ワークシートごとに DataTable オブジェクトを含む新しい DataSet を作成します。 各テーブルの TableName プロパティには元の Excel シート名が反映されるため、処理中に特定のデータを簡単に参照できます。
Excelからデータベースにデータをインポートするにはどうすればよいですか?
一般的なワークフローとしては、Excelファイルのデータを読み込み、データベースシステムに挿入するという流れがある。 DataTable構造は、データベース操作のため for .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");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このコードは、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");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")出力

LoadWorkSheetsFromDataSet メソッドは、DataTable オブジェクトを含む DataSet を受け取り、対応するワークシートを作成します。 DataTableをExcelにエクスポートする方法については、ドキュメントをご覧ください。
結論
IronXLは、Excelからデータテーブルへの変換の複雑さを、分かりやすいメソッド呼び出しに変換します。 単一のExcelワークシートをインポートする場合でも、複数のシートを含むワークブックを完全なデータセットに処理する場合でも、このライブラリはXLSXファイル、データ型の変換、およびストリームベースの読み込みを効率的に処理します。
DataTableの柔軟性とIronXLの直感的なAPIの組み合わせにより、データベース統合、レポートシステム、アプリケーションデータバインディングのための強力なデータワークフローが実現します。 IronXLをダウンロードしてExcelデータの処理を効率化するか、本番環境への導入用にライセンスをご購入ください。

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



