使用 IRONXL 如何使用 IronXL.Excel 使用 C# 將 SQL 資料匯出至 Excel Curtis Chau 更新:2026年1月5日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 將資料從 SQL Server 匯出至 Microsoft Excel 是 .NET 開發人員建立報表系統、資料分析工具和商業應用程式的共同需求。 本教學示範如何使用 C# 與 IronXL將 SQL 資料匯出至 Excel,IronXL.Excel 是一個功能強大的 Excel 函式庫,可簡化整個過程而不需要安裝 Microsoft Office。 開始您的免費試用,跟隨以下的程式碼範例。 !{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110-- 從 SQL Server 資料庫匯出資料的最佳方式是什麼? 從 SQL Server 匯出資料至 Excel 檔案的最有效方法包含三個步驟:建立資料庫連線、擷取資料至 DataTable 中,以及使用 IronXL.Excel 將資料寫入 Excel 工作表。 與 Microsoft Interop 解決方案不同,IronXL.Excel 可獨立運作,並能以優異的效能處理大型資料集。 如何連接至 SQL Server 並擷取資料? 在匯出 SQL 資料之前,您需要先建立連線並執行 SQL 查詢,以填充 DataTable 。 連接字串包含存取資料所需的 SQL Server 資料庫憑證和伺服器資訊。 您需要在 Visual Studio 專案中匯入下列命名空間: using IronXL; using System.Data; using System.Data.SqlClient; // Define connection string for SQL Server string connectionString = @"Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True"; // SQL query to retrieve data from SQL Server table string sql = "SELECT * FROM Customers"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Use SqlDataAdapter to fill DataTable with query results SqlDataAdapter adapter = new SqlDataAdapter(sql, connection); DataTable dt = new DataTable(); adapter.Fill(dt); // Create new workbook and worksheet WorkBook workBook = WorkBook.Create(); WorkSheet workSheet = workBook.CreateWorkSheet("CustomerData"); // Export DataTable to Excel worksheet with column names int rowIndex = 1; // Write column headers from DataTable for (int j = 0; j < dt.Columns.Count; j++) { workSheet.SetCellValue(0, j, dt.Columns[j].ColumnName); } // Fill worksheet with data values for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Columns.Count; j++) { string cellValue = dt.Rows[i][j].ToString(); workSheet.SetCellValue(rowIndex, j, cellValue); } rowIndex++; } // Save Excel file in xlsx format workBook.SaveAs("CustomerExport.xlsx"); } using IronXL; using System.Data; using System.Data.SqlClient; // Define connection string for SQL Server string connectionString = @"Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True"; // SQL query to retrieve data from SQL Server table string sql = "SELECT * FROM Customers"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Use SqlDataAdapter to fill DataTable with query results SqlDataAdapter adapter = new SqlDataAdapter(sql, connection); DataTable dt = new DataTable(); adapter.Fill(dt); // Create new workbook and worksheet WorkBook workBook = WorkBook.Create(); WorkSheet workSheet = workBook.CreateWorkSheet("CustomerData"); // Export DataTable to Excel worksheet with column names int rowIndex = 1; // Write column headers from DataTable for (int j = 0; j < dt.Columns.Count; j++) { workSheet.SetCellValue(0, j, dt.Columns[j].ColumnName); } // Fill worksheet with data values for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Columns.Count; j++) { string cellValue = dt.Rows[i][j].ToString(); workSheet.SetCellValue(rowIndex, j, cellValue); } rowIndex++; } // Save Excel file in xlsx format workBook.SaveAs("CustomerExport.xlsx"); } Imports IronXL Imports System.Data Imports System.Data.SqlClient ' Define connection string for SQL Server Dim connectionString As String = "Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True" ' SQL query to retrieve data from SQL Server table Dim sql As String = "SELECT * FROM Customers" Using connection As New SqlConnection(connectionString) connection.Open() ' Use SqlDataAdapter to fill DataTable with query results Dim adapter As New SqlDataAdapter(sql, connection) Dim dt As New DataTable() adapter.Fill(dt) ' Create new workbook and worksheet Dim workBook As WorkBook = WorkBook.Create() Dim workSheet As WorkSheet = workBook.CreateWorkSheet("CustomerData") ' Export DataTable to Excel worksheet with column names Dim rowIndex As Integer = 1 ' Write column headers from DataTable For j As Integer = 0 To dt.Columns.Count - 1 workSheet.SetCellValue(0, j, dt.Columns(j).ColumnName) Next ' Fill worksheet with data values For i As Integer = 0 To dt.Rows.Count - 1 For j As Integer = 0 To dt.Columns.Count - 1 Dim cellValue As String = dt.Rows(i)(j).ToString() workSheet.SetCellValue(rowIndex, j, cellValue) Next rowIndex += 1 Next ' Save Excel file in xlsx format workBook.SaveAs("CustomerExport.xlsx") End Using $vbLabelText $csharpLabel 輸出 。 此代碼會建立一個 Excel 檔案,其中的列標題格式正確,這些列標題源自您的 SQL Server 資料表結構。 DataTable dt 會儲存查詢結果,然後有系統地寫入每個 Excel 表單的儲存格中。 以下程式碼示範了填充工作表單格的 add 方法模式。 IronXL 支援 xls 和 xlsx 兩種格式,可與 Microsoft Office 應用程式達到最大的相容性。 如何使用 ASP.NET 匯出按鈕匯出資料? 對於網路應用程式,您通常會在使用者按下匯出按鈕時觸發匯出。 以下程式碼顯示如何使用 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"; try { using (SqlConnection connection = new SqlConnection(connectionString)) { // Execute SQL query to get data from SQL server SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", connection); DataSet dataSet = new DataSet(); adapter.Fill(dataSet); // Create Excel workbook from DataSet - each table becomes a sheet WorkBook workBook = WorkBook.Create(); WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook); // Convert to byte array for download byte[] fileBytes = workBook.ToByteArray(); string filename = "OrdersExport.xlsx"; // Set response headers for file download Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment;filename=" + filename); Response.BinaryWrite(fileBytes); Response.End(); } } catch (Exception ex) { // Handle any errors during export Response.Write("Export error: " + ex.Message); } } } 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"; try { using (SqlConnection connection = new SqlConnection(connectionString)) { // Execute SQL query to get data from SQL server SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", connection); DataSet dataSet = new DataSet(); adapter.Fill(dataSet); // Create Excel workbook from DataSet - each table becomes a sheet WorkBook workBook = WorkBook.Create(); WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook); // Convert to byte array for download byte[] fileBytes = workBook.ToByteArray(); string filename = "OrdersExport.xlsx"; // Set response headers for file download Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment;filename=" + filename); Response.BinaryWrite(fileBytes); Response.End(); } } catch (Exception ex) { // Handle any errors during export Response.Write("Export error: " + ex.Message); } } } 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" Try Using connection As New SqlConnection(connectionString) ' Execute SQL query to get data from SQL server Dim adapter As New SqlDataAdapter("SELECT * FROM Orders", connection) Dim dataSet As New DataSet() adapter.Fill(dataSet) ' Create Excel workbook from DataSet - each table becomes a sheet Dim workBook As WorkBook = WorkBook.Create() WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook) ' Convert to byte array for download Dim fileBytes As Byte() = workBook.ToByteArray() Dim filename As String = "OrdersExport.xlsx" ' Set response headers for file download Response.Clear() Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" Response.AddHeader("content-disposition", "attachment;filename=" & filename) Response.BinaryWrite(fileBytes) Response.End() End Using Catch ex As Exception ' Handle any errors during export Response.Write("Export error: " & ex.Message) End Try End Sub End Class $vbLabelText $csharpLabel 匯出按鈕範例 。 輸出 。 object sender 和 EventArgs e 參數是 ASP.NET 事件處理器的標準參數。 IronXL 與 Microsoft Interop 不同,Microsoft Interop 需要 object misValue 來處理遺失的參數,而 IronXL 則使用較為乾淨的 API。 當使用者按下匯出按鈕時,此私有 void 方法會執行資料庫查詢、建立 Excel 文件,並透過瀏覽器觸發檔案下載。 如何匯入資料並建立有欄頭的 Excel 檔案? IronXL 提供多種方法來有效率地建立 Excel 檔案和匯入資料。 LoadWorkSheetsFromDataSet 方法接受 DataTable 集合,並自動將列名保留為 Excel 工作表中的標題。 此方法可與 System.Data 物件和 Microsoft SQL Server 無縫配合。 using IronXL; using System.Data; using System.Data.SqlClient; // Connection to SQL database string connectionString = @"Data Source=.;Initial Catalog=Inventory;Integrated Security=True"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Query multiple tables from database 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"); // Create new workbook and load all tables WorkBook workBook = WorkBook.Create(); WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook); // Save as xlsx file workBook.SaveAs("InventoryReport.xlsx"); } using IronXL; using System.Data; using System.Data.SqlClient; // Connection to SQL database string connectionString = @"Data Source=.;Initial Catalog=Inventory;Integrated Security=True"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Query multiple tables from database 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"); // Create new workbook and load all tables WorkBook workBook = WorkBook.Create(); WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook); // Save as xlsx file workBook.SaveAs("InventoryReport.xlsx"); } Imports IronXL Imports System.Data Imports System.Data.SqlClient ' Connection to SQL database Dim connectionString As String = "Data Source=.;Initial Catalog=Inventory;Integrated Security=True" Using connection As New SqlConnection(connectionString) connection.Open() ' Query multiple tables from database 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") ' Create new workbook and load all tables Dim workBook As WorkBook = WorkBook.Create() WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook) ' Save as xlsx file workBook.SaveAs("InventoryReport.xlsx") End Using $vbLabelText $csharpLabel 輸出 。 此方法可有效處理多個 SQL Server 表格,在單一工作簿中建立獨立的工作表標籤。 對於使用儲存程序的應用程式,只要使用 CommandType.StoredProcedure 將內嵌的 SQL 查詢取代為您的程序呼叫即可。 使用 HTML 標記的 Web 應用程式如何? 在 ASP.NET 應用程式中,HTML 標記由按鈕和資料網格組成,IronXL for .NET 可與之無縫整合。 您頁面的 HTML 標記由觸發伺服器端匯出作業的標準網頁控制項組成,而 IronXL 則處理所有 Excel 的產生,無須依賴 Microsoft Office。 有關 匯出 DataSet 和 DataTable 物件的詳細指引,請造訪 IronXL.Excel 文件。 結論 有了 IronXL.Excel,使用 C# 將 SQL 資料匯出至 Excel 就變得簡單直接。 該函式庫消除了複雜的 Interop 相依性,同時提供對 DataTable, DataSet 以及直接資料庫整合的強大支援。 無論是建立主控台應用程式或具有檔案下載功能的網頁型報表系統,IronXL.Excel 都能提供可靠的 Excel 檔案生成功能。 購買授權進行生產部署,或使用 免費試用繼續探索,在您的 .NET 專案中測試此 Excel 函式庫的全部功能。 常見問題解答 如何使用 C# 將 SQL 資料匯出至 Excel? 利用 IronXL.Excel 這個功能強大的 Excel 函式庫,您可以使用 C# 將 SQL 資料匯出至 Excel。它簡化了流程,而且不需要安裝 Microsoft Office。 使用 IronXL 匯出 SQL 資料的先決條件是什麼? 若要使用 IronXL 匯出 SQL 資料,您必須具備對 C# 的基本瞭解、存取 SQL Server 的能力,以及在開發環境中安裝 IronXL 函式庫。 使用 IronXL.Excel 匯出 SQL 資料到 Excel 是否需要安裝 Microsoft Office? 不,IronXL.Excel 允許您匯出 SQL 資料到 Excel,而不需要在系統上安裝 Microsoft Office。 IronXL.Excel 在匯出 SQL 資料到 Excel 時,可以處理大型資料集嗎? 是的,IronXL.Excel 能有效處理大型資料集,因此適合將大量 SQL 資料匯出至 Excel。 IronXL 是否與所有版本的 SQL Server 相容? IronXL 的設計可與各種版本的 SQL Server 搭配使用,確保在不同環境下的相容性和易用性。 將 SQL 資料匯出至 Excel 的使用案例有哪些? 將 SQL 資料匯出至 Excel 對於建立報表系統、資料分析工具以及需要以廣泛使用的格式輕鬆存取和分享資料的商業應用程式非常有用。 IronXL 支援 Excel 檔案的格式化選項嗎? 是的,IronXL.Excel 提供一系列格式化選項,可讓您自訂匯出 Excel 檔案的外觀和結構。 IronXL.Excel 如何簡化 SQL 資料匯出至 Excel 的過程? IronXL.Excel 簡化了匯出程序,提供直覺的方法連接至 SQL Server、擷取 DataTable 記錄以及產生 Excel 檔案,而不需要複雜的設定或額外的軟體。 Curtis Chau 立即與工程團隊聊天 技術撰稿人 Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。 相關文章 發表日期 2026年2月15日 如何使用 OleDb vs IronXL.Excel 將 DataTable 匯出至 Excel C# 學習如何使用 OleDb vs IronXL.Excel 將 DataTable 匯出至 Excel C#。 閱讀更多 發表日期 2026年2月15日 如何在未安裝 Office 的情況下使用 IronXL 開啟 VB.NET 中的現有 Excel 檔案 了解如何使用 IronXL for .NET 在未安裝 Office 的情況下在 VB.NET 中開啟現有的 Excel 檔案。 閱讀更多 發表日期 2026年2月15日 C# CSV to XLSX:完整開發人員指南 使用 IronXL 在 C# 中將 CSV 轉換為 XLSX。載入 CSV 檔案、保留資料類型、新增圖表,以及匯出為 Excel 格式,而無需 Microsoft Office 的相依性。 閱讀更多 C# DataGridView Export to Excel with Formatting:完整指南使用 IronXL.Excel 在 C# 中讀...
發表日期 2026年2月15日 如何使用 OleDb vs IronXL.Excel 將 DataTable 匯出至 Excel C# 學習如何使用 OleDb vs IronXL.Excel 將 DataTable 匯出至 Excel C#。 閱讀更多
發表日期 2026年2月15日 如何在未安裝 Office 的情況下使用 IronXL 開啟 VB.NET 中的現有 Excel 檔案 了解如何使用 IronXL for .NET 在未安裝 Office 的情況下在 VB.NET 中開啟現有的 Excel 檔案。 閱讀更多
發表日期 2026年2月15日 C# CSV to XLSX:完整開發人員指南 使用 IronXL 在 C# 中將 CSV 轉換為 XLSX。載入 CSV 檔案、保留資料類型、新增圖表,以及匯出為 Excel 格式,而無需 Microsoft Office 的相依性。 閱讀更多