IRONXLの使用 C#でExcelデータテーブルをエクスポート | Excelデータを変換 カーティス・チャウ 更新日:2026年2月27日 IronXL をダウンロード NuGet ダウンロード DLL ダウンロード 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る Excel データを DataTable にエクスポートすると、データベース、UI コントロール、LINQ クエリと自然に連携する、構造化されたメモリ内スプレッドシート コンテンツへのアクセスが可能になります。 逆方向、つまり DataTable を Excel ファイルに書き戻すことも、レポート生成やデータ保存のワークフローにとって同様に重要です。 IronXLは、Microsoft Officeへの依存やCOM相互運用設定を必要とせず、純粋な.NETで双方向の処理を行います。 以下の例を実行する前に、 IronXLをインストールしてください。 Install-Package IronXL dotnet add package IronXL Install-Package IronXL dotnet add package IronXL SHELL インストールされると、WorkBook および WorkSheet 型は、ToDataTable および ToDataSet メソッドを公開し、これらは System.Data 構造体に直接マッピングされます。 また、DataRow の値をワークシートに書き戻し、ファイルを XLSX または XLS 形式で保存することで、このプロセスを逆に行うこともできます。 ワークシート全体をデータテーブルに変換するにはどうすればよいですか? ToDataTable メソッドは、ワークシート全体または名前付き範囲を System.Data.DataTable に変換します。 最初の行を列ヘッダーとして扱うには、true を渡します。これにより、結果として得られるテーブルの列名がスプレッドシートの見出しと完全に一致します。 using IronXL; using System.Data; // Load the workbook from disk WorkBook workbook = WorkBook.Load("customers.xlsx"); // Grab the default (first) worksheet WorkSheet worksheet = workbook.DefaultWorkSheet; // Convert the entire sheet; first row becomes column headers DataTable dataTable = worksheet.ToDataTable(true); // Iterate every row and print each cell value foreach (DataRow row in dataTable.Rows) { for (int i = 0; i < dataTable.Columns.Count; i++) { Console.Write(row[i] + "\t"); } Console.WriteLine(); } using IronXL; using System.Data; // Load the workbook from disk WorkBook workbook = WorkBook.Load("customers.xlsx"); // Grab the default (first) worksheet WorkSheet worksheet = workbook.DefaultWorkSheet; // Convert the entire sheet; first row becomes column headers DataTable dataTable = worksheet.ToDataTable(true); // Iterate every row and print each cell value foreach (DataRow row in dataTable.Rows) { for (int i = 0; i < dataTable.Columns.Count; i++) { Console.Write(row[i] + "\t"); } Console.WriteLine(); } Imports IronXL Imports System.Data ' Load the workbook from disk Dim workbook As WorkBook = WorkBook.Load("customers.xlsx") ' Grab the default (first) worksheet Dim worksheet As WorkSheet = workbook.DefaultWorkSheet ' Convert the entire sheet; first row becomes column headers Dim dataTable As DataTable = worksheet.ToDataTable(True) ' Iterate every row and print each cell value For Each row As DataRow In dataTable.Rows For i As Integer = 0 To dataTable.Columns.Count - 1 Console.Write(row(i) & vbTab) Next Console.WriteLine() Next $vbLabelText $csharpLabel このコードが何をするのか WorkBook.Load は、Office オートメーションを使用せずに XLSX ファイルを読み取ります。 worksheet.ToDataTable(true) はシート内の各セルを反復処理し、最初の行を DataColumn 名として使用して、それを DataRow にマッピングします。 結果として得られる DataTable は標準の System.Data オブジェクトです。これを DataGridView にバインドしたり、 SqlBulkCopy に渡したり、すぐに LINQ クエリを実行したりできます。 ToDataTable 呼び出しは XLS 形式と XLSX 形式の両方をサポートしているため、同じコードを修正せずに従来の表計算ソフトでも使用できます。 完全なAPIリファレンスについては、 IronXL DataTableおよびDataSetのドキュメントを参照してください。 特定のセル範囲をデータテーブルにエクスポートするにはどうすればよいですか? ワークシートに複数のデータ領域が含まれている場合、または行と列のサブセットのみが必要な場合は、シート全体ではなく特定のセル範囲をエクスポートできます。 IronXLは選択されたセルのみを処理するため、この方法は大きなファイルに対してより効率的です。 using IronXL; using System.Data; WorkBook workbook = WorkBook.Load("financial_report.xlsx"); // Access a named worksheet WorkSheet worksheet = workbook.GetWorkSheet("Summary"); // Select only the region A1:D20 and convert it DataTable dt = worksheet["A1:D20"].ToDataTable(true); Console.WriteLine($"Rows: {dt.Rows.Count}, Columns: {dt.Columns.Count}"); foreach (DataRow row in dt.Rows) { foreach (var item in row.ItemArray) { Console.Write(item + "\t"); } Console.WriteLine(); } using IronXL; using System.Data; WorkBook workbook = WorkBook.Load("financial_report.xlsx"); // Access a named worksheet WorkSheet worksheet = workbook.GetWorkSheet("Summary"); // Select only the region A1:D20 and convert it DataTable dt = worksheet["A1:D20"].ToDataTable(true); Console.WriteLine($"Rows: {dt.Rows.Count}, Columns: {dt.Columns.Count}"); foreach (DataRow row in dt.Rows) { foreach (var item in row.ItemArray) { Console.Write(item + "\t"); } Console.WriteLine(); } Imports IronXL Imports System.Data Dim workbook As WorkBook = WorkBook.Load("financial_report.xlsx") ' Access a named worksheet Dim worksheet As WorkSheet = workbook.GetWorkSheet("Summary") ' Select only the region A1:D20 and convert it Dim dt As DataTable = worksheet("A1:D20").ToDataTable(True) Console.WriteLine($"Rows: {dt.Rows.Count}, Columns: {dt.Columns.Count}") For Each row As DataRow In dt.Rows For Each item In row.ItemArray Console.Write(item & vbTab) Next Console.WriteLine() Next $vbLabelText $csharpLabel レンジ選択が重要な理由 角括弧構文 worksheet["A1:D20"] は IronXl.Range オブジェクトを返します。 その範囲に対して ToDataTable を呼び出すと、処理がまさにそのセルに限定されるため、ソースファイルに数万行ある場合でも、実行速度が向上し、メモリ使用量が削減されます。 名前付き範囲を指定したり、実行時に範囲文字列を動的に構築したりすることもできます(例:$"A1:D{lastRow}")。これにより、可変長のデータエクスポートに対して柔軟なアプローチが可能になります。 RangeクラスのAPIリファレンスには、利用可能なすべての選択およびクエリメソッドが記載されています。 複数シートのワークブックをデータセットに変換するにはどうすればよいですか? 複数のシートを含むワークブックは、各シートが個別の DataTable となる System.Data.DataSet に自然にマッピングされます。 ToDataSet メソッドは、この変換を 1 つの呼び出しで実行します。 using IronXL; using System.Data; WorkBook workbook = WorkBook.Load("multi_sheet.xlsx"); // Each worksheet becomes a DataTable inside the DataSet DataSet dataSet = workbook.ToDataSet(); foreach (DataTable table in dataSet.Tables) { Console.WriteLine($"Sheet: {table.TableName}"); Console.WriteLine($"Rows: {table.Rows.Count}"); Console.WriteLine(); } using IronXL; using System.Data; WorkBook workbook = WorkBook.Load("multi_sheet.xlsx"); // Each worksheet becomes a DataTable inside the DataSet DataSet dataSet = workbook.ToDataSet(); foreach (DataTable table in dataSet.Tables) { Console.WriteLine($"Sheet: {table.TableName}"); Console.WriteLine($"Rows: {table.Rows.Count}"); Console.WriteLine(); } Imports IronXL Imports System.Data Dim workbook As WorkBook = WorkBook.Load("multi_sheet.xlsx") ' Each worksheet becomes a DataTable inside the DataSet Dim dataSet As DataSet = workbook.ToDataSet() For Each table As DataTable In dataSet.Tables Console.WriteLine($"Sheet: {table.TableName}") Console.WriteLine($"Rows: {table.Rows.Count}") Console.WriteLine() Next $vbLabelText $csharpLabel 名前でシートにアクセスする 返された各 DataTable は、そのプロパティとして元のワークシート名を使用するため、コレクションを反復処理する代わりに、dataSet.Tables["Summary"] を使用して特定のシートを取得できます。 これにより、複数のシートを使ったレポート作成ロジックを簡単に構築したり、複数のワークシートのデータを結合してから結果をデータベースに書き込んだりすることが可能になります。 複数のシートを操作したり、ワークブックの構造をナビゲートしたりするその他の方法については、 "Excel ワークシートを開いて管理する方法"を参照してください。 データテーブルをExcelファイルにエクスポートするにはどうすればよいですか? データテーブルへのインポート方向は、話の半分に過ぎません。 構造化データをレポート、ダウンロード、またはアーカイブ用にスプレッドシートとして書き出す必要がある場合は、新しいワークブックを作成し、DataTable からセルにデータを入力して保存します。 using IronXL; using System.Data; // Build a sample DataTable DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("ProductID", typeof(int))); dt.Columns.Add(new DataColumn("ProductName", typeof(string))); dt.Columns.Add(new DataColumn("UnitPrice", typeof(decimal))); dt.Rows.Add(1, "Widget Pro", 29.99m); dt.Rows.Add(2, "Gadget Max", 49.99m); dt.Rows.Add(3, "Sensor Kit", 14.50m); // Create a new workbook and worksheet WorkBook workbook = WorkBook.Create(); WorkSheet worksheet = workbook.CreateWorkSheet("Products"); // Write column headers from DataTable.Columns for (int col = 0; col < dt.Columns.Count; col++) { worksheet.SetCellValue(0, col, dt.Columns[col].ColumnName); } // Write data rows for (int row = 0; row < dt.Rows.Count; row++) { for (int col = 0; col < dt.Columns.Count; col++) { worksheet.SetCellValue(row + 1, col, dt.Rows[row][col]); } } // Save as XLSX workbook.SaveAs("products_export.xlsx"); Console.WriteLine("Export complete."); using IronXL; using System.Data; // Build a sample DataTable DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("ProductID", typeof(int))); dt.Columns.Add(new DataColumn("ProductName", typeof(string))); dt.Columns.Add(new DataColumn("UnitPrice", typeof(decimal))); dt.Rows.Add(1, "Widget Pro", 29.99m); dt.Rows.Add(2, "Gadget Max", 49.99m); dt.Rows.Add(3, "Sensor Kit", 14.50m); // Create a new workbook and worksheet WorkBook workbook = WorkBook.Create(); WorkSheet worksheet = workbook.CreateWorkSheet("Products"); // Write column headers from DataTable.Columns for (int col = 0; col < dt.Columns.Count; col++) { worksheet.SetCellValue(0, col, dt.Columns[col].ColumnName); } // Write data rows for (int row = 0; row < dt.Rows.Count; row++) { for (int col = 0; col < dt.Columns.Count; col++) { worksheet.SetCellValue(row + 1, col, dt.Rows[row][col]); } } // Save as XLSX workbook.SaveAs("products_export.xlsx"); Console.WriteLine("Export complete."); Imports IronXL Imports System.Data ' Build a sample DataTable Dim dt As New DataTable() dt.Columns.Add(New DataColumn("ProductID", GetType(Integer))) dt.Columns.Add(New DataColumn("ProductName", GetType(String))) dt.Columns.Add(New DataColumn("UnitPrice", GetType(Decimal))) dt.Rows.Add(1, "Widget Pro", 29.99D) dt.Rows.Add(2, "Gadget Max", 49.99D) dt.Rows.Add(3, "Sensor Kit", 14.50D) ' Create a new workbook and worksheet Dim workbook As WorkBook = WorkBook.Create() Dim worksheet As WorkSheet = workbook.CreateWorkSheet("Products") ' Write column headers from DataTable.Columns For col As Integer = 0 To dt.Columns.Count - 1 worksheet.SetCellValue(0, col, dt.Columns(col).ColumnName) Next ' Write data rows For row As Integer = 0 To dt.Rows.Count - 1 For col As Integer = 0 To dt.Columns.Count - 1 worksheet.SetCellValue(row + 1, col, dt.Rows(row)(col)) Next Next ' Save as XLSX workbook.SaveAs("products_export.xlsx") Console.WriteLine("Export complete.") $vbLabelText $csharpLabel 細胞書き込みループの仕組み SetCellValue(rowIndex, columnIndex, value) は object の値を受け入れるため、ヘッダー行には列名を、データ行には生のセル値を型変換なしで渡します。 row + 1 の行オフセットは、行 0 をヘッダー用に予約します。 生成されるXLSXファイルは、プレースホルダーや一時ファイルを含まない、完全に有効なスプレッドシートです。 大規模なデータテーブルの場合は、データの書き込み後に列の自動サイズ調整を適用することを検討してください。そうすることで、手動で書式設定しなくてもコンテンツがきれいに表示されます。 DataTableをDataGridViewにバインドするにはどうすればよいですか? Excel シートを DataTable にエクスポートする最も一般的な理由の 1 つは、それを Windows Forms DataGridView に表示することです。 DataTable を取得したら、バインディングは 1 行のコードで済みます。 using IronXL; using System.Data; using System.Windows.Forms; WorkBook workbook = WorkBook.Load("inventory.xlsx"); WorkSheet worksheet = workbook.DefaultWorkSheet; DataTable dataTable = worksheet.ToDataTable(true); // Bind directly to a DataGridView dataGridViewInventory.DataSource = dataTable; using IronXL; using System.Data; using System.Windows.Forms; WorkBook workbook = WorkBook.Load("inventory.xlsx"); WorkSheet worksheet = workbook.DefaultWorkSheet; DataTable dataTable = worksheet.ToDataTable(true); // Bind directly to a DataGridView dataGridViewInventory.DataSource = dataTable; Imports IronXL Imports System.Data Imports System.Windows.Forms Dim workbook As WorkBook = WorkBook.Load("inventory.xlsx") Dim worksheet As WorkSheet = workbook.DefaultWorkSheet Dim dataTable As DataTable = worksheet.ToDataTable(True) ' Bind directly to a DataGridView dataGridViewInventory.DataSource = dataTable $vbLabelText $csharpLabel 製本時に何が起こるのか DataSource を設定すると、DataGridView がトリガーされ、DataTable から列名と行データが読み取られます。 各 DataColumn はグリッドの列になり、各 DataRow は表示される行になります。 グリッドに組み込まれているコントロールを使用すれば、追加のコードを記述することなく、並べ替え、フィルタリング、選択といった動作を適用できます。 このパターンは、WPF DataGrid、 ASP.NET GridView、およびその他 for .NETデータバインディングインフラストラクチャでも同様に機能します。 手順の詳細については、 DataGridViewをExcelにエクスポートする方法(逆方向)を参照してください。 エクスポートしたデータテーブルでLINQクエリを使用するにはどうすればよいですか? ワークシートを DataTable に変換した後、各 DataRow をクエリ可能な要素に変換する AsEnumerable() 拡張メソッドを使用して LINQ クエリを実行できます。 using IronXL; using System.Data; using System.Linq; WorkBook workbook = WorkBook.Load("sales.xlsx"); DataTable dt = workbook.DefaultWorkSheet.ToDataTable(true); // Filter rows where the "Revenue" column exceeds 10000 var highRevenue = dt.AsEnumerable() .Where(row => row.Field<double>("Revenue") > 10000) .OrderByDescending(row => row.Field<double>("Revenue")) .ToList(); Console.WriteLine($"High-revenue records: {highRevenue.Count}"); foreach (var row in highRevenue) { Console.WriteLine($"{row["Product"]}: {row["Revenue"]:C}"); } using IronXL; using System.Data; using System.Linq; WorkBook workbook = WorkBook.Load("sales.xlsx"); DataTable dt = workbook.DefaultWorkSheet.ToDataTable(true); // Filter rows where the "Revenue" column exceeds 10000 var highRevenue = dt.AsEnumerable() .Where(row => row.Field<double>("Revenue") > 10000) .OrderByDescending(row => row.Field<double>("Revenue")) .ToList(); Console.WriteLine($"High-revenue records: {highRevenue.Count}"); foreach (var row in highRevenue) { Console.WriteLine($"{row["Product"]}: {row["Revenue"]:C}"); } Imports IronXL Imports System.Data Imports System.Linq Dim workbook As WorkBook = WorkBook.Load("sales.xlsx") Dim dt As DataTable = workbook.DefaultWorkSheet.ToDataTable(True) ' Filter rows where the "Revenue" column exceeds 10000 Dim highRevenue = dt.AsEnumerable() _ .Where(Function(row) row.Field(Of Double)("Revenue") > 10000) _ .OrderByDescending(Function(row) row.Field(Of Double)("Revenue")) _ .ToList() Console.WriteLine($"High-revenue records: {highRevenue.Count}") For Each row In highRevenue Console.WriteLine($"{row("Product")}: {row("Revenue"):C}") Next $vbLabelText $csharpLabel DataTableに対するLINQが役立つ理由 LINQクエリを使用すると、変換されたワークシートからデータをフィルタリング、ソート、グループ化、および投影するための、読みやすく厳密に型指定された方法が得られます。 row.Field<t>(columnName) は型強制をきれいに処理し、値を変換できない場合はサイレント null を返すのではなく、InvalidCastException をスローします。 これにより、データ品質の問題を早期に発見しやすくなります。 この方法を、前のセクションで説明した範囲ベースのエクスポートと組み合わせることで、ワークシート全体ではなく特定のシート領域をクエリし、大きなファイルでもメモリ使用量を低く抑えることができます。 エクスポート時に、null値や空のセルはどのように処理しますか? Excelのスプレッドシートには、空白セル、結合された領域、プレースホルダーテキストなど、しばしば欠落部分が存在する。 IronXL は、エクスポートされた DataTable 内の DBNull.Value に空のセルをマッピングし、標準の ADO .NETの動作と一致するため、既存の null 処理コードは変更なしで動作します。 IronXLがExcelセルの状態をDataTableの値にマッピングする方法 Excelのセル状態 データテーブルの値 注意事項 テキスト値 文字列 現状のまま返却 数値 2 倍または小数 セルの書式によって異なります 日付値 日時 シリアル番号から解析 ブール値 ブーリアン Excelでの真偽判定 空のセル DBNull.Value 標準.NET null 数式セル 計算結果 IronXLはまずその式を評価します DataTable を Excel に書き戻すと、DBNull.Value フィールドは空のセルになり、往復の正確性が維持されます。 null フィールドのデフォルト文字列が必要な場合は、SetCellValue を呼び出す前に、DBNull.Value をプレースホルダーに置き換えてください。 データ準備に関する詳細なガイダンスについては、Microsoft のDataTable クラスのドキュメントで、null 値の処理、制約管理、行の状態について詳しく解説されています。 大きなワークシートをエクスポートする際に、メモリを節約するにはどうすればよいですか? 数千行もあるワークシートの場合、シート全体を一度にエクスポートすると、すべてのデータが同時にメモリに割り当てられます。 IronXLの2つのパターンが、ピーク時のメモリ使用量を削減します。 -範囲エクスポート: シート全体ではなく、境界領域を処理するには、worksheet["A1:D5000"].ToDataTable(true) を使用します。 -バッチ処理: worksheet.RowCount を使用して最後に使用された行を計算し、固定サイズの範囲 (たとえば一度に 1,000 行) をループして、次のバッチに進む前に各バッチを処理します。 worksheet.RowCount および worksheet.ColumnCount プロパティを使用すると、次元をハードコーディングすることなく動的な範囲文字列を作成できます。 using IronXL; using System.Data; WorkBook workbook = WorkBook.Load("large_dataset.xlsx"); WorkSheet worksheet = workbook.DefaultWorkSheet; int batchSize = 1000; int totalRows = worksheet.RowCount; for (int startRow = 1; startRow <= totalRows; startRow += batchSize) { int endRow = Math.Min(startRow + batchSize - 1, totalRows); string rangeAddress = $"A{startRow}:Z{endRow}"; DataTable batch = worksheet[rangeAddress].ToDataTable(false); // Process each batch -- write to database, transform, etc. Console.WriteLine($"Processed rows {startRow} to {endRow}"); } using IronXL; using System.Data; WorkBook workbook = WorkBook.Load("large_dataset.xlsx"); WorkSheet worksheet = workbook.DefaultWorkSheet; int batchSize = 1000; int totalRows = worksheet.RowCount; for (int startRow = 1; startRow <= totalRows; startRow += batchSize) { int endRow = Math.Min(startRow + batchSize - 1, totalRows); string rangeAddress = $"A{startRow}:Z{endRow}"; DataTable batch = worksheet[rangeAddress].ToDataTable(false); // Process each batch -- write to database, transform, etc. Console.WriteLine($"Processed rows {startRow} to {endRow}"); } Imports IronXL Imports System.Data Dim workbook As WorkBook = WorkBook.Load("large_dataset.xlsx") Dim worksheet As WorkSheet = workbook.DefaultWorkSheet Dim batchSize As Integer = 1000 Dim totalRows As Integer = worksheet.RowCount For startRow As Integer = 1 To totalRows Step batchSize Dim endRow As Integer = Math.Min(startRow + batchSize - 1, totalRows) Dim rangeAddress As String = $"A{startRow}:Z{endRow}" Dim batch As DataTable = worksheet(rangeAddress).ToDataTable(False) ' Process each batch -- write to database, transform, etc. Console.WriteLine($"Processed rows {startRow} to {endRow}") Next $vbLabelText $csharpLabel このパターンは、メモリ制約のあるC#で大きなExcelファイルを読み込む場合に特に有効です。 データテーブルをデータベースに書き込むにはどうすればよいですか? DataTable を取得したら、SqlBulkCopy を介して SQL Server に挿入するのが、大規模なデータセットの場合の最速の方法です。 SqlBulkCopy は DataTable を直接受け入れ、個々の INSERT ステートメントを構築せずに行をバッチでストリーミングします。 using IronXL; using System.Data; using Microsoft.Data.SqlClient; WorkBook workbook = WorkBook.Load("orders.xlsx"); DataTable dataTable = workbook.DefaultWorkSheet.ToDataTable(true); string connectionString = "Server=.;Database=OrdersDB;Trusted_Connection=True;"; using SqlConnection connection = new(connection文字列); connection.Open(); using SqlBulkCopy bulkCopy = new(connection); bulkCopy.DestinationTableName = "dbo.Orders"; bulkCopy.BatchSize = 500; bulkCopy.BulkCopyTimeout = 60; // Map DataTable columns to database columns bulkCopy.ColumnMappings.Add("OrderID", "OrderID"); bulkCopy.ColumnMappings.Add("CustomerName", "CustomerName"); bulkCopy.ColumnMappings.Add("TotalAmount", "TotalAmount"); bulkCopy.WriteToServer(dataTable); Console.WriteLine("Bulk insert complete."); using IronXL; using System.Data; using Microsoft.Data.SqlClient; WorkBook workbook = WorkBook.Load("orders.xlsx"); DataTable dataTable = workbook.DefaultWorkSheet.ToDataTable(true); string connectionString = "Server=.;Database=OrdersDB;Trusted_Connection=True;"; using SqlConnection connection = new(connection文字列); connection.Open(); using SqlBulkCopy bulkCopy = new(connection); bulkCopy.DestinationTableName = "dbo.Orders"; bulkCopy.BatchSize = 500; bulkCopy.BulkCopyTimeout = 60; // Map DataTable columns to database columns bulkCopy.ColumnMappings.Add("OrderID", "OrderID"); bulkCopy.ColumnMappings.Add("CustomerName", "CustomerName"); bulkCopy.ColumnMappings.Add("TotalAmount", "TotalAmount"); bulkCopy.WriteToServer(dataTable); Console.WriteLine("Bulk insert complete."); Imports IronXL Imports System.Data Imports Microsoft.Data.SqlClient Dim workbook As WorkBook = WorkBook.Load("orders.xlsx") Dim dataTable As DataTable = workbook.DefaultWorkSheet.ToDataTable(True) Dim connectionString As String = "Server=.;Database=OrdersDB;Trusted_Connection=True;" Using connection As New SqlConnection(connectionString) connection.Open() Using bulkCopy As New SqlBulkCopy(connection) bulkCopy.DestinationTableName = "dbo.Orders" bulkCopy.BatchSize = 500 bulkCopy.BulkCopyTimeout = 60 ' Map DataTable columns to database columns bulkCopy.ColumnMappings.Add("OrderID", "OrderID") bulkCopy.ColumnMappings.Add("CustomerName", "CustomerName") bulkCopy.ColumnMappings.Add("TotalAmount", "TotalAmount") bulkCopy.WriteToServer(dataTable) End Using End Using Console.WriteLine("Bulk insert complete.") $vbLabelText $csharpLabel 列マッピングに関する考慮事項 ColumnMappings コレクションは、DataTable 列名をデータベースの列名に一致させます。 両方の名前が同じ場合は、個別のマッピングを省略でき、SqlBulkCopy が名前で自動的に一致します。 スプレッドシートの列の順序がデータベースのスキーマと異なる場合は、明示的なマッピングの方が安全です。 IronXLとデータベースワークフローを組み合わせる方法の詳細については、 C# Excelインポートガイドを参照してください。このガイドでは、挿入前の検証など、追加のインポートシナリオについて説明しています。 Entity Framework ベースのプロジェクトでは、まず DataTable 行を型付きモデル オブジェクトに変換し、次にEFCore.BulkExtensionsなどのライブラリから DbContext.BulkInsert を使用して ORM 対応のバッチ挿入を行います。 MicrosoftのSqlBulkCopyのドキュメントでは、バッチ処理オプションとトランザクションサポートについて詳しく説明されています。 次のステップは何ですか? これで、 IronXLを使用して Excel と DataTable 間でデータを双方向に移動するための完全なツールキットが揃いました。 ヘッダーを考慮したエクスポートのために、worksheet.ToDataTable(true) を使用してワークシート全体を変換します worksheet["A1:D20"].ToDataTable(true)構文を使用して特定のセル範囲をエクスポートします。 workbook.ToDataSet() を使用して複数シートのワークブックを変換して、DataSet に完全にアクセスできるようにします DataTable の内容を DataRow の値と SetCellValue を繰り返して XLSX に書き戻します。 DataTable を DataGridView のような UI コントロールに単一の DataSource 割り当てでバインドします。 高スループットのデータベース挿入のために、DataTable から直接 SqlBulkCopy をフィードします IronXLのスキルをさらに深めるには、以下の関連トピックをご覧ください。 DataSet と DataTable のエクスポート -- 完全な API リファレンス OleDbを使用せずにC#でExcelをDataTableに変換する C# DataTable から Excel へのエクスポートチュートリアル ASP.NETからデータテーブルをExcelにエクスポートする データテーブルをExcelにエクスポートする最速の方法 C#でExcelファイルを読み込む 書式設定済みのExcelファイルをエクスポートする C#でExcelファイルを読み込む - ベストプラクティス C# Excel の範囲選択と操作 ExcelデータをC#アプリケーションにインポートする まずはIronXLの無料トライアルライセンスを取得して、これらのサンプルを自分のプロジェクトで実行してみましょう。 デプロイの準備が整ったら、本番環境ライセンスを購入するか、ライセンスに関するガイダンスについてチームにご相談ください。 今IronXLを始めましょう。 無料で始める よくある質問 IronXLを使用して C# で Excel データを DataTable にエクスポートするにはどうすればよいですか? Excel ファイルをIronXLに読み込み、ワークシートまたは範囲を選択し、ExportToDataTable メソッドを使用してデータを DataTable オブジェクトに変換することで、 IronXLを使用して C# で Excel データを DataTable にエクスポートできます。 Excel データを DataTable に変換する利点は何ですか? ExcelデータをDataTableに変換すると、データベース操作、UIコントロールへのデータバインディング、そしてシームレスな.NET統合に最適な構造化されたデータが得られます。また、C#アプリケーション内でのデータ操作や処理も容易になります。 IronXL はExcel と DataTable 間のデータのインポートとエクスポートの両方を処理できますか? はい、 IronXL はExcel から DataTable へのデータのインポートと DataTable から Excel へのデータのエクスポートの両方を効率的に処理するため、C# アプリケーションでのデータ交換を管理するための多目的ツールになります。 IronXLを使用して Excel シート内の特定の範囲を DataTable に変換することは可能ですか? はい、 IronXL を使用すると、Excel シート内の特定の範囲を選択して DataTable に変換できるため、データの操作と抽出が柔軟になります。 Excel データ変換にIronXLを使用するには、Microsoft Office をインストールする必要がありますか? いいえ、 IronXLを使用して Excel データを DataTable に変換したり、その逆を行ったりするために、お使いのマシンに Microsoft Office がインストールされている必要はありません。IronXLはMicrosoft Office とは独立して動作します。 IronXLを使用して Excel から DataTable に変換できるデータの種類は何ですか? IronXL は、データの整合性と構造を維持しながら、数値、テキスト、日付、数式など、Excel のさまざまな種類のデータを DataTable 形式に変換できます。 IronXL はDataTable を Excel ファイルにエクスポートできますか? はい、 IronXL はDataTable を Excel ファイルにエクスポートできるため、C# アプリケーションから直接レポートを生成したり、データ ストレージ ソリューションを作成したりできます。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 更新日 2026年3月1日 ASP .NET C# で Excel ファイルをダウンロード: XLSX、CSV などにデータをエクスポート C#とIronXLを使用して、 ASP.NET CoreでExcelファイルをダウンロードします。MVCコントローラーからMemoryStreamとFile()を使用して、XLSX、CSV、XML形式でデータをエクスポートします。コード例も含まれています。 詳しく読む 更新日 2026年3月1日 IronXLを使用してBlazorで Excel ファイルをエクスポートする方法 IronXLを使用してBlazor Server アプリケーションから Excel にデータをエクスポートする方法を学びます。このガイドでは、プロジェクトのセットアップ、サービス設計、条件付き書式、複数シートのレポート、エラー処理について、完全な C# コード例とともに説明します。 詳しく読む 更新日 2026年2月27日 StreamReader の代わりに C# で Excel ファイルを読み取る方法 StreamReader が Excel ファイルを読み取れない理由と、 IronXL を使用して C# .NETのディスクまたはメモリ ストリームから XLSX および XLS ワークブックを読み込む方法について説明します。 詳しく読む OleDb とIronXLを使用して DataTable を Excel C# にエクスポートするExcel をインストールせず...
更新日 2026年3月1日 ASP .NET C# で Excel ファイルをダウンロード: XLSX、CSV などにデータをエクスポート C#とIronXLを使用して、 ASP.NET CoreでExcelファイルをダウンロードします。MVCコントローラーからMemoryStreamとFile()を使用して、XLSX、CSV、XML形式でデータをエクスポートします。コード例も含まれています。 詳しく読む
更新日 2026年3月1日 IronXLを使用してBlazorで Excel ファイルをエクスポートする方法 IronXLを使用してBlazor Server アプリケーションから Excel にデータをエクスポートする方法を学びます。このガイドでは、プロジェクトのセットアップ、サービス設計、条件付き書式、複数シートのレポート、エラー処理について、完全な C# コード例とともに説明します。 詳しく読む
更新日 2026年2月27日 StreamReader の代わりに C# で Excel ファイルを読み取る方法 StreamReader が Excel ファイルを読み取れない理由と、 IronXL を使用して C# .NETのディスクまたはメモリ ストリームから XLSX および XLS ワークブックを読み込む方法について説明します。 詳しく読む