IRONXLの使用 IronXLを使用して C# で SQL データを Excel にエクスポートする カーティス・チャウ 更新日:2026年3月1日 IronXL をダウンロード NuGet ダウンロード DLL ダウンロード 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る SQL ServerからMicrosoft Excelへのデータのエクスポートは、レポートシステム、データ分析ツール、およびビジネスアプリケーションを構築する.NET開発者にとって一般的な作業です。 このチュートリアルでは、Microsoft Officeのインストールを必要とせずに処理全体を処理する.NET ExcelライブラリであるIronXLを使用して、C#でSQLデータをExcelにエクスポートする方法を説明します。 無料トライアルを開始して、以下のコード例に従ってください。 今IronXLを始めましょう。 無料で始める SQLデータエクスポート用のIronXLはどのようにインストールするのですか? コードを記述する前に、プロジェクトにIronXLを追加する必要があります。 最も簡単な方法は、Visual Studio のNuGetパッケージ マネージャー コンソールを使用することです。 Install-Package IronXl.Excel Install-Package IronXl.Excel SHELL または、 .NET CLI を使用してください。 dotnet add package IronXl.Excel dotnet add package IronXl.Excel SHELL インストールが完了したら、ファイルの先頭に必要な名前空間を追加します。.NET 10のトップレベルステートメントを使用した場合、設定は次のようになります。 using IronXL; using System.Data; using System.Data.SqlClient; using IronXL; using System.Data; using System.Data.SqlClient; Imports IronXL Imports System.Data Imports System.Data.SqlClient $vbLabelText $csharpLabel IronXLは.NET Standard 2.0以降を対象としているため、追加の設定なしで.NET 10、 .NET Framework、 ASP.NET Core、およびBlazorプロジェクトと連携して動作します。 このパッケージはNuGetで入手できます。 SQLサーバーのデータベースからデータをエクスポートする最良の方法は何ですか? SQL Server から Excel ファイルにデータをエクスポートする最も効率的な方法は、データベース接続を確立し、データを DataTable に取得し、 IronXLを使用してデータを Excel ワークシートに書き込むという 3 つのステップで構成されます。 Microsoftの相互運用ソリューションとは異なり、 IronXLは独立して動作し、COM相互運用オーバーヘッドによるパフォーマンスのボトルネックなしに大規模なデータセットを処理できます。 基本的なパターンは単純明快だ。 SqlDataAdapter は、 Microsoft の ADO .NETデータ アクセス フレームワークの一部であり、 .NET 1.0 以降、リレーショナル データベースからオブジェクトにデータを格納する標準的な方法となっています。 接続文字列を使用して SqlConnection を開きます。 SqlDataAdapter を使用して、DataTable または DataSet を埋めます。 IronXLのメソッドを呼び出してワークブックを作成し、ワークシートのセルにデータを入力します。 ワークブックを .xlsx または .xls として保存します。 この方法は、SQL Server 2012以降、Azure SQL Database、Amazon RDS for SQL Server、およびADO.NET互換のデータソースと互換性があります。 コンソールアプリケーションを使用する場合でも、Webベースのレポートツールを使用する場合でも、同じパターンが適用されます。 どのように SQL Server に接続し、データを取得しますか? SQL データをエクスポートする前に、接続を確立し、SQL クエリを実行して DataTable を埋める必要があります。 接続文字列には、データへのアクセスに必要なSQL Serverデータベースの認証情報とサーバー情報が含まれています。 次の例では、Northwind Customers テーブルに対してクエリを実行し、 IronXL のセル書き込み APIを使用して各行を Excel ワークシートに書き込みます。 using IronXL; using System.Data; using System.Data.SqlClient; string connectionString = "Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True"; string sql = "SELECT * FROM Customers"; using SqlConnection connection = new SqlConnection(connectionString); connection.Open(); SqlDataAdapter adapter = new SqlDataAdapter(sql, connection); DataTable dt = new DataTable(); adapter.Fill(dt); WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX); WorkSheet workSheet = workBook.CreateWorkSheet("Customers"); // Write column headers 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].ToString()); } } workBook.SaveAs("CustomerExport.xlsx"); using IronXL; using System.Data; using System.Data.SqlClient; string connectionString = "Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True"; string sql = "SELECT * FROM Customers"; using SqlConnection connection = new SqlConnection(connectionString); connection.Open(); SqlDataAdapter adapter = new SqlDataAdapter(sql, connection); DataTable dt = new DataTable(); adapter.Fill(dt); WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX); WorkSheet workSheet = workBook.CreateWorkSheet("Customers"); // Write column headers 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].ToString()); } } workBook.SaveAs("CustomerExport.xlsx"); Imports IronXL Imports System.Data Imports System.Data.SqlClient Dim connectionString As String = "Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True" Dim sql As String = "SELECT * FROM Customers" Using connection As New SqlConnection(connectionString) connection.Open() Dim adapter As New SqlDataAdapter(sql, connection) Dim dt As New DataTable() adapter.Fill(dt) Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX) Dim workSheet As WorkSheet = workBook.CreateWorkSheet("Customers") ' Write column headers 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).ToString()) Next Next workBook.SaveAs("CustomerExport.xlsx") End Using $vbLabelText $csharpLabel 出力 このコードは、SQL Serverのテーブル構造から適切な形式の列ヘッダーを持つExcelファイルを作成します。 DataTable dt はクエリ結果を格納し、その後、0 から始まる行および列インデックスを使用して、各セルに体系的に書き込まれます。 IronXLは、Microsoft Officeアプリケーションとの幅広い互換性を実現するために、.xlsxの両方の形式をサポートしています。 SQL テーブルに DateTime または数値列が含まれている場合は、SetCellValue を呼び出す前にセル値を適切にキャストしてください。 数値型を直接渡すことで、Excelのデータ型が保持され、エクスポートされた列に対して並べ替えや数式計算が可能になります。 LoadWorkSheetsFromDataSet を使用して複数のテーブルをエクスポートするにはどうすればよいですか? レポートで複数の SQL テーブル (たとえば、製品とカテゴリ) のデータが必要な場合、それらを DataSet にロードして、 IronXL にテーブルごとに 1 つのワークシートを自動的に作成させることができます。 これは、DataSetまたはDataTableをExcelにエクスポートするための最も簡潔な方法です。 using IronXL; using System.Data; using System.Data.SqlClient; string connectionString = "Data Source=.;Initial Catalog=Inventory;Integrated Security=True"; using SqlConnection connection = new SqlConnection(connectionString); connection.Open(); SqlDataAdapter productsAdapter = new SqlDataAdapter("SELECT * FROM Products", connection); SqlDataAdapter categoriesAdapter = new SqlDataAdapter("SELECT * FROM Categories", connection); DataSet dataSet = new DataSet(); productsAdapter.Fill(dataSet, "Products"); categoriesAdapter.Fill(dataSet, "Categories"); WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX); WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook); workBook.SaveAs("InventoryReport.xlsx"); using IronXL; using System.Data; using System.Data.SqlClient; string connectionString = "Data Source=.;Initial Catalog=Inventory;Integrated Security=True"; using SqlConnection connection = new SqlConnection(connectionString); connection.Open(); SqlDataAdapter productsAdapter = new SqlDataAdapter("SELECT * FROM Products", connection); SqlDataAdapter categoriesAdapter = new SqlDataAdapter("SELECT * FROM Categories", connection); DataSet dataSet = new DataSet(); productsAdapter.Fill(dataSet, "Products"); categoriesAdapter.Fill(dataSet, "Categories"); WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX); WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook); workBook.SaveAs("InventoryReport.xlsx"); Imports IronXL Imports System.Data Imports System.Data.SqlClient Dim connectionString As String = "Data Source=.;Initial Catalog=Inventory;Integrated Security=True" Using connection As New SqlConnection(connectionString) connection.Open() Dim productsAdapter As New SqlDataAdapter("SELECT * FROM Products", connection) Dim categoriesAdapter As New SqlDataAdapter("SELECT * FROM Categories", connection) Dim dataSet As New DataSet() productsAdapter.Fill(dataSet, "Products") categoriesAdapter.Fill(dataSet, "Categories") Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX) WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook) workBook.SaveAs("InventoryReport.xlsx") End Using $vbLabelText $csharpLabel 出力 LoadWorkSheetsFromDataSet は、DataSet 内の各 DataTable の TableName プロパティを読み取り、一致するワークシート タブを作成します。 DataTable の列名が各シートのヘッダー行になります。 この方法は、複数の結果セットを返すストアドプロシージャに特に役立ちます。なぜなら、複数の呼び出しを使用して DataSet にデータを格納し、すべてを 1 つのステップでエクスポートできるからです。 カスタム書式設定を使用してプログラムで Excel ファイルを作成する必要があるアプリケーションでは、LoadWorkSheetsFromDataSet を呼び出した後でも個々のワークシートにアクセスし、保存する前にスタイル、列幅、または数式を適用できます。 どのようにASP.NETエクスポートボタンを使用してデータをエクスポートできますか? ウェブアプリケーションの場合、通常はユーザーがボタンをクリックしたときにエクスポート処理が実行されます。 次のASP.NET Web Forms の例では、ボタンのクリック イベントを処理し、SQL クエリから Excel ワークブックを作成し、Response.AddHeader を使用してファイルをダウンロードとしてブラウザーにプッシュする方法を示します。 using IronXL; using System; using System.Data; using System.Data.SqlClient; using System.IO; using System.Web.UI; public partial class ExportPage : Page { private void ExportButton_Click(object sender, EventArgs e) { string connectionString = "Data Source=localhost;Initial Catalog=Sales;Integrated Security=True"; using SqlConnection connection = new SqlConnection(connectionString); SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", connection); DataSet dataSet = new DataSet(); adapter.Fill(dataSet); WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX); WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook); byte[] fileBytes = workBook.ToByteArray(); string filename = "OrdersExport.xlsx"; Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment;filename=" + filename); Response.BinaryWrite(fileBytes); Response.End(); } } using IronXL; using System; using System.Data; using System.Data.SqlClient; using System.IO; using System.Web.UI; public partial class ExportPage : Page { private void ExportButton_Click(object sender, EventArgs e) { string connectionString = "Data Source=localhost;Initial Catalog=Sales;Integrated Security=True"; using SqlConnection connection = new SqlConnection(connectionString); SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", connection); DataSet dataSet = new DataSet(); adapter.Fill(dataSet); WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX); WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook); byte[] fileBytes = workBook.ToByteArray(); string filename = "OrdersExport.xlsx"; Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment;filename=" + filename); Response.BinaryWrite(fileBytes); Response.End(); } } Imports IronXL Imports System Imports System.Data Imports System.Data.SqlClient Imports System.IO Imports System.Web.UI Public Partial Class ExportPage Inherits Page Private Sub ExportButton_Click(sender As Object, e As EventArgs) Dim connectionString As String = "Data Source=localhost;Initial Catalog=Sales;Integrated Security=True" Using connection As New SqlConnection(connectionString) Dim adapter As New SqlDataAdapter("SELECT * FROM Orders", connection) Dim dataSet As New DataSet() adapter.Fill(dataSet) Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX) WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook) Dim fileBytes As Byte() = workBook.ToByteArray() Dim filename As String = "OrdersExport.xlsx" Response.Clear() Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" Response.AddHeader("content-disposition", "attachment;filename=" & filename) Response.BinaryWrite(fileBytes) Response.End() End Using End Sub End Class $vbLabelText $csharpLabel エクスポート ボタンの例 出力 ToByteArray() メソッドは、ワークブック全体をメモリ内のバイト配列に変換し、それを HTTP レスポンス ストリームに直接書き込みます。 これにより、一時ファイルをディスクに書き込むことを回避できます。 Microsoft Interopはobject misValueプレースホルダーとサーバーにインストールされたOfficeライセンスを必要としますが、 IronXLは外部依存関係のないマネージドコードで完全に動作します。 ASP.NET CoreおよびRazor Pages プロジェクトの場合、コントローラー アクション内の Response.BinaryWrite を return File(fileBytes, contentType, filename) に置き換えてください。 ASP.NET CoreExcel へのエクスポートパターンは、ワークブックをバイト配列に変換する同じアプローチに従います。 エクスポートしたExcelファイルに書式設定と列ヘッダーを追加するにはどうすればよいですか? 生のSQLエクスポートデータは、エンドユーザーと共有する前に、表示方法を改善する必要がある場合が多い。 IronXL、データがワークシートに書き込まれた後でも、セルスタイル、列幅、数値形式を制御できます。 次の例は、ヘッダー行を太字にし、列幅を自動調整する方法を示しています。 using IronXL; using System.Data; using System.Data.SqlClient; string connectionString = "Data Source=localhost;Initial Catalog=Sales;Integrated Security=True"; using SqlConnection connection = new SqlConnection(connectionString); connection.Open(); SqlDataAdapter adapter = new SqlDataAdapter("SELECT OrderID, CustomerID, OrderDate, Total FROM Orders", connection); DataTable dt = new DataTable(); adapter.Fill(dt); WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX); WorkSheet workSheet = workBook.CreateWorkSheet("Orders"); // Write and style header row for (int col = 0; col < dt.Columns.Count; col++) { workSheet.SetCellValue(0, col, dt.Columns[col].ColumnName); workSheet[0, col].Style.Font.Bold = true; workSheet[0, col].Style.Font.Height = 12; } // Write data rows with type-aware value assignment for (int row = 0; row < dt.Rows.Count; row++) { for (int col = 0; col < dt.Columns.Count; col++) { object value = dt.Rows[row][col]; if (value is DateTime date) workSheet.SetCellValue(row + 1, col, date.ToString("yyyy-MM-dd")); else if (value is decimal || value is double || value is int) workSheet.SetCellValue(row + 1, col, Convert.ToDouble(value)); else workSheet.SetCellValue(row + 1, col, value.ToString()); } } workBook.SaveAs("FormattedOrdersExport.xlsx"); using IronXL; using System.Data; using System.Data.SqlClient; string connectionString = "Data Source=localhost;Initial Catalog=Sales;Integrated Security=True"; using SqlConnection connection = new SqlConnection(connectionString); connection.Open(); SqlDataAdapter adapter = new SqlDataAdapter("SELECT OrderID, CustomerID, OrderDate, Total FROM Orders", connection); DataTable dt = new DataTable(); adapter.Fill(dt); WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX); WorkSheet workSheet = workBook.CreateWorkSheet("Orders"); // Write and style header row for (int col = 0; col < dt.Columns.Count; col++) { workSheet.SetCellValue(0, col, dt.Columns[col].ColumnName); workSheet[0, col].Style.Font.Bold = true; workSheet[0, col].Style.Font.Height = 12; } // Write data rows with type-aware value assignment for (int row = 0; row < dt.Rows.Count; row++) { for (int col = 0; col < dt.Columns.Count; col++) { object value = dt.Rows[row][col]; if (value is DateTime date) workSheet.SetCellValue(row + 1, col, date.ToString("yyyy-MM-dd")); else if (value is decimal || value is double || value is int) workSheet.SetCellValue(row + 1, col, Convert.ToDouble(value)); else workSheet.SetCellValue(row + 1, col, value.ToString()); } } workBook.SaveAs("FormattedOrdersExport.xlsx"); Imports IronXL Imports System.Data Imports System.Data.SqlClient Dim connectionString As String = "Data Source=localhost;Initial Catalog=Sales;Integrated Security=True" Using connection As New SqlConnection(connectionString) connection.Open() Dim adapter As New SqlDataAdapter("SELECT OrderID, CustomerID, OrderDate, Total FROM Orders", connection) Dim dt As New DataTable() adapter.Fill(dt) Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX) Dim workSheet As WorkSheet = workBook.CreateWorkSheet("Orders") ' Write and style header row For col As Integer = 0 To dt.Columns.Count - 1 workSheet.SetCellValue(0, col, dt.Columns(col).ColumnName) workSheet(0, col).Style.Font.Bold = True workSheet(0, col).Style.Font.Height = 12 Next ' Write data rows with type-aware value assignment For row As Integer = 0 To dt.Rows.Count - 1 For col As Integer = 0 To dt.Columns.Count - 1 Dim value As Object = dt.Rows(row)(col) If TypeOf value Is DateTime Then Dim dateValue As DateTime = CType(value, DateTime) workSheet.SetCellValue(row + 1, col, dateValue.ToString("yyyy-MM-dd")) ElseIf TypeOf value Is Decimal OrElse TypeOf value Is Double OrElse TypeOf value Is Integer Then workSheet.SetCellValue(row + 1, col, Convert.ToDouble(value)) Else workSheet.SetCellValue(row + 1, col, value.ToString()) End If Next Next workBook.SaveAs("FormattedOrdersExport.xlsx") End Using $vbLabelText $csharpLabel ヘッダー行を太字と大きなフォントで装飾すると、Excelでエクスポートしたレポートが読みやすくなります。 合計や件数などの数値列の場合、文字列ではなく double という値を渡すことで、エクスポートされたデータに対して Excel のネイティブな並べ替え機能と集計機能が正しく動作するようになります。 IronXLのセル書式設定に関するドキュメントでは、セルの罫線、背景色、数値書式マスクなど、あらゆる書式設定オプションについて詳しく知ることができます。 大規模なSQLデータセットを効率的に処理するにはどうすればよいでしょうか? 数万行ものデータを含むテーブルでは、メモリ管理が重要になります。 Excel に書き込む前に結果セット全体を DataTable に読み込む方法は、ほとんどのレポートでうまく機能しますが、非常に大きなエクスポートの場合は、行をバッチで処理するか、SqlDataReader を直接使用できます。 大量輸出を行う際には、以下の戦略を検討してください。 SQL OFFSET/FETCH を使用したページ分割: 大量のエクスポートを複数のワークシートに分割し、各ワークシートに結果の 1 ページ分を含めます。 これにより、Excelにおける個々のシートサイズを管理しやすい状態に保つことができます。 -ディスクへのストリーム: ToByteArray() を使用してすべてをメモリに保持するのではなく、各バッチの後に workBook.SaveAs(filePath) を呼び出します。 -選択する列を制限する: SQL Server から転送されるデータ量を減らすために、SELECT * ではなく、SELECT ステートメントで明示的な列リストを使用します。 C#でDataTableをExcelにエクスポートする最速の方法については、 IronXLブログにさまざまなアプローチとそのメモリプロファイルを比較した専用のベンチマーク記事があります。 WorkBook.LoadWorkSheetsFromDataSet メソッドは、行の反復処理を内部的に行うため、中規模の DataSet オブジェクトに対して特に効率的です。 特にDataTableからExcelへのエクスポートシナリオにおいては、この方法は定型コードを削減し、一括書き込みに最適化されています。 ExcelからSQL Serverにデータをインポートするにはどうすればよいですか? 多くのレポート作成アプリケーションにとって、エクスポートワークフローは全体の半分に過ぎない。 ユーザーがテンプレートをダウンロードし、データを入力して、SQL Serverに再アップロードできるようにする必要がある場合もあります。 IronXLを使えば、この双方向ワークフローが簡単に実現できます。 Excel データをデータベースにインポートするには、アップロードされたファイルを WorkBook.Load(filePath) を使用して読み込み、ワークシートの行を反復処理し、パラメーター化された SqlCommand を使用して各行を挿入します。 using IronXL; using System.Data.SqlClient; WorkBook workBook = WorkBook.Load("UploadedData.xlsx"); WorkSheet sheet = workBook.DefaultWorkSheet; string connectionString = "Data Source=localhost;Initial Catalog=Inventory;Integrated Security=True"; using SqlConnection connection = new SqlConnection(connectionString); connection.Open(); // Skip header row, start at row index 1 for (int row = 1; row <= sheet.RowCount; row++) { string productName = sheet[row, 0].StringValue; int quantity = (int)sheet[row, 1].DoubleValue; decimal price = (decimal)sheet[row, 2].DoubleValue; using SqlCommand cmd = new SqlCommand( "INSERT INTO Products (Name, Quantity, Price) VALUES (@name, @qty, @price)", connection); cmd.Parameters.AddWithValue("@name", productName); cmd.Parameters.AddWithValue("@qty", quantity); cmd.Parameters.AddWithValue("@price", price); cmd.ExecuteNonQuery(); } using IronXL; using System.Data.SqlClient; WorkBook workBook = WorkBook.Load("UploadedData.xlsx"); WorkSheet sheet = workBook.DefaultWorkSheet; string connectionString = "Data Source=localhost;Initial Catalog=Inventory;Integrated Security=True"; using SqlConnection connection = new SqlConnection(connectionString); connection.Open(); // Skip header row, start at row index 1 for (int row = 1; row <= sheet.RowCount; row++) { string productName = sheet[row, 0].StringValue; int quantity = (int)sheet[row, 1].DoubleValue; decimal price = (decimal)sheet[row, 2].DoubleValue; using SqlCommand cmd = new SqlCommand( "INSERT INTO Products (Name, Quantity, Price) VALUES (@name, @qty, @price)", connection); cmd.Parameters.AddWithValue("@name", productName); cmd.Parameters.AddWithValue("@qty", quantity); cmd.Parameters.AddWithValue("@price", price); cmd.ExecuteNonQuery(); } Imports IronXL Imports System.Data.SqlClient Dim workBook As WorkBook = WorkBook.Load("UploadedData.xlsx") Dim sheet As WorkSheet = workBook.DefaultWorkSheet Dim connectionString As String = "Data Source=localhost;Initial Catalog=Inventory;Integrated Security=True" Using connection As New SqlConnection(connectionString) connection.Open() ' Skip header row, start at row index 1 For row As Integer = 1 To sheet.RowCount Dim productName As String = sheet(row, 0).StringValue Dim quantity As Integer = CInt(sheet(row, 1).DoubleValue) Dim price As Decimal = CDec(sheet(row, 2).DoubleValue) Using cmd As New SqlCommand("INSERT INTO Products (Name, Quantity, Price) VALUES (@name, @qty, @price)", connection) cmd.Parameters.AddWithValue("@name", productName) cmd.Parameters.AddWithValue("@qty", quantity) cmd.Parameters.AddWithValue("@price", price) cmd.ExecuteNonQuery() End Using Next End Using $vbLabelText $csharpLabel パラメータ化クエリは、ユーザーが提供したExcelデータを読み取る際に、SQLインジェクション攻撃から保護します。 Microsoft Learn の SqlCommand ドキュメントには、利用可能なすべてのオーバーロードとパラメーターバインディングパターンが網羅されています。 挿入する前に必ずセル値を検証してください。空の文字列、範囲外の数値、予期しないデータ型など、SQL Serverテーブルの制約違反を引き起こす可能性のあるものがないか確認してください。 逆方向については、 IronXL は、データ ソースが .xlsx ファイルではなくカンマ区切りの出力を生成するシナリオのために、C# で CSV ファイルを読み込むこともサポートしています。 IronXLを他のエクスポート手法と比較するとどうですか? .NETでSQLデータをExcelにエクスポートするには、いくつかの方法があります。 以下の表は、主なトレードオフをまとめたものです。 .NETにおけるSQLからExcelへのエクスポート方法 ― 機能比較 アプローチ オフィス必須 データセットのサポート 書式設定 サーバーセーフ IronXL なし はい(内蔵) フルスタイル、フォーミュラ はい Microsoft Interop はい 手動反復 COM経由でフル いいえ(COMサーバー) EPPlus なし 手動反復 広範囲にわたる はい NPOI なし 手動反復 良い はい CSV出力 なし マニュアル 該当なし はい Microsoft Interopは、サーバーにOfficeがインストールされていることを前提としており、サーバー側のWebアプリケーションではサポートされていません。 IronXL、 EPPlus 、およびNPOIはすべてOfficeなしで動作します。IronXLの利点は、LoadWorkSheetsFromDataSetまで一流のサポートを提供していることです。これにより、他のライブラリでの手動による行反復処理と比較して、エクスポートコードを数行に削減できます。 詳細な比較については、 Microsoft Office Interopの代替製品に関する記事を参照してください。 次のステップは何ですか? C#を使用してSQLデータをExcelにエクスポートするのは、IronXLを使えば簡単です。 このライブラリは、DataSet、および直接データベース統合を強力にサポートしながら、複雑な相互運用依存関係を排除します。 コンソールアプリケーションの構築であれ、ファイルダウンロード機能を備えたWebベースのレポートシステムの構築であれ、 IronXLはあらゆる.NET 10プロジェクトタイプにおいて、信頼性の高いExcelファイル生成機能を提供します。 この基盤をさらに発展させるために、以下の関連リソースをご覧ください。 C#でExcelファイルを作成する-- ワークブックの作成と書式設定に関する完全チュートリアル DataSet と DataTable を Excel にエクスポートする-- LoadWorkSheetsFromDataSet メソッドの公式ハウツーガイド ExcelからSQLへのデータインポート- 完全な往復ワークフロー DataTableからExcelへのエクスポート-- 単一テーブルシナリオに特化したガイド ASP.NETデータテーブルを Excel にエクスポート-- Web アプリケーションのエクスポートパターン データテーブルをExcelにエクスポートする最速の方法- パフォーマンスベンチマーク 本番環境への導入にはライセンスをご購入いただくか、無料トライアルでこのExcelライブラリの全機能を.NETプロジェクトでお試しください。 よくある質問 C#を使用してSQLデータをExcelにエクスポートするにはどうすればよいですか? IronXLを使えば、C# を使って SQL データを Excel にエクスポートできます。SqlConnection と SqlDataAdapter を使って SQL Server に接続し、DataTable にデータを入力します。その後、 IronXLを使ってワークブックを作成し、データ行を書き込みます。IronXLを使用するには Microsoft Office のインストールは必要ありません。 IronXLを使ってSQLデータをエクスポートするための前提条件は何ですか? SQL データのエクスポートにIronXLを使用するには、 .NETプロジェクト (Framework、Core、または.NET 10+)、SQL Server データベースへのアクセス、およびInstall-Package IronXL .Excel を介してインストールされたIronXL NuGetパッケージが必要です。 IronXLでSQLデータをExcelにエクスポートするにはMicrosoft Officeがインストールされている必要がありますか? いいえ、 IronXL を使用すると、システムまたはサーバーに Microsoft Office をインストールしなくても、SQL データを Excel にエクスポートできます。 SQLデータをExcelにエクスポートする際、IronXLは大きなデータセットを扱えますか? はい、 IronXLは大規模なデータセットを効率的に処理します。非常に大きなエクスポートの場合は、SQL OFFSET/FETCHでページ区切りを行い、ToByteArrayではなくSaveAsを使用してディスクに書き込み、SQLクエリで選択した列を制限してください。 複数の SQL テーブルを別々の Excel シートにエクスポートするにはどうすればよいですか? WorkBook.LoadWorkSheetsFromDataSet は、複数の SqlDataAdapter 呼び出しによって生成された DataSet で使用します。IronXLはDataTable ごとに 1 つのワークシートを作成し、各タブに DataTable.TableName プロパティから名前を付けます。 ASP.NETで Excel ファイルのダウンロードをトリガーするにはどうすればよいですか? workBook.ToByteArray() を呼び出してファイルをバイト列として取得し、正しい Content-Type ヘッダーと content-disposition ヘッダーを付与して HTTP レスポンスに書き込みます。ASP.NET ASP.NET Coreでは、コントローラーから File(fileBytes, contentType, filename) を返します。 IronXLを使用して Excel データを SQL Server にインポートできますか? はい。WorkBook.Load を使用して Excel ファイルを読み込み、IronXL のインデクサーを使用してワークシートの行を反復処理し、パラメータ化された SqlCommand を使用して各行を挿入することで、SQL インジェクションから保護します。 SQL データのエクスポートに関してIronXLと Microsoft Interop を比較するとどうなりますか? IronXL はサーバーに Office をインストールする必要がなく、マネージドコードで実行され、LoadWorkSheetsFromDataSet によるネイティブな DataSet エクスポートをサポートします。Microsoft Interop は COM サーバーを必要とするため、Web サーバー環境では確実に実行できません。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター 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 ワークブックを読み込む方法について説明します。 詳しく読む C# DataGridView から Excel へのエクスポート: 書式設定の完全ガイド | IronXLC#で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 ワークブックを読み込む方法について説明します。 詳しく読む