使用 IRONXL 如何在 C# 中將 Excel 導入到 SQL Server Jordi Bardia 更新:2026年1月18日 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 在許多不同的商業環境中,將資料從 Excel 匯入 SQL Server 是一項典型的必要操作。 這項活動涉及的任務包括:從 Excel 檔案讀取資料並將其輸入到 SQL Server 資料庫中。 雖然導出嚮導經常被使用,但IronXL提供了一種更程式化、更靈活的資料處理方法。 IronXL是一個功能強大的 C# 庫,可以從檔案匯入 Excel 資料; 因此,有可能加快這項操作。 為此,本文將提供一個全面的操作指南,介紹如何使用 C# 設定、執行和增強將 Excel 匯入 SQL Server 的功能。 How to Import Excel to SQL Server in C 設定開發環境 準備您的 Excel 文件 連線到您的 SQL Server 資料庫 使用IronXL從 Excel 檔案讀取數據 使用IronPDF匯出數據並產生 PDF 報告 查看PDF報告 IronXL是什麼? IronXL,有時也被稱為IronXl.Excel,是一個功能豐富的 C# 庫,旨在簡化在.NET應用程式中處理 Excel 檔案的操作。 這款功能強大的工具非常適合伺服器端應用程序,因為它使開發人員能夠讀取、建立和編輯 Excel 文件,而無需在電腦上安裝 Microsoft Excel。 IronXL支援 Excel 2007 及更高版本 (.xlsx) 和 Excel 97–2003 (.xls) 格式,在管理各種 Excel 檔案版本方面提供了靈活性。 它允許進行大量的資料操作,例如操作工作表、行和列,以及插入、更新和刪除資料。 IronXL也支援儲存格格式設定和 Excel 公式,能夠以程式設計方式產生複雜且格式良好的電子表格。 IronXL具有效能最佳化,並相容於多個.NET平台,包括.NET Framework、 .NET Core和.NET 5/6,能夠有效處理大量資料集。 對於希望將 Excel 檔案操作整合到其應用程式中的開發人員來說,無論是簡單的資料匯入/匯出活動還是複雜的報告系統,它都是一個靈活的選擇,因為它與其他.NET框架的介面非常流暢。 主要特點 讀取並寫入 Excel 文件 開發人員可以使用IronXL從 Excel 檔案讀取和寫入資料。 建立新的 Excel 檔案和編輯現有文件都很簡單。 無需安裝 Microsoft Excel 與某些其他程式庫不同, IronXL不需要在執行該應用程式的電腦上安裝 Microsoft Excel。 因此,它非常適合伺服器端應用程式。 支援多種Excel格式 本函式庫透過支援 .xls(Excel 97-2003)和 .xlsx(Excel 2007 及更高版本)格式,提供了管理各種 Excel 檔案類型的多功能性。 建立一個新的 Visual Studio 項目 建立 Visual Studio 控制台專案很簡單。 在 Visual Studio 中,執行下列操作以建立控制台應用程式: 1.開啟 Visual Studio:請確保在開啟之前已在電腦上安裝了 Visual Studio。 2.開始新項目:選擇 File -> New -> Project。 從 Create a new project 框的左側面板中,選擇您喜歡的程式語言-例如 C#。 從可用項目範本清單中選擇 Console App 或 Console App (.NET Core) 範本。 在"名稱"區域,為你的專案取個名字。 確定項目保存位置。 按一下"建立"以啟動控制台應用程式專案。 安裝IronXL庫 由於即將進行更新,因此需要安裝IronXL庫。 最後,要完成此過程,請啟動NuGet套件管理器控制台並鍵入以下命令: Install-Package IronXL.Excel 使用NuGet套件管理器搜尋 IronXL 套件是另一種方法。 這樣我們就可以選擇要下載與IronXL相關的哪些NuGet套件。 使用IronXL將 Excel 導入 SQL 使用IronXL從 Excel 讀取數據 使用IronXL可以更輕鬆地從 Excel 檔案中讀取資料。 以下範例展示如何使用IronXL從 Excel 檔案中讀取資料。這種方法會將資料讀取並儲存到一個字典清單中,每個字典對應於 Excel 工作表中的一行。 using IronXL; using System; using System.Collections.Generic; public class ExcelReader { public static List<Dictionary<string, object>> ReadExcelFile(string filePath) { // Initialize a list to store data from Excel var data = new List<Dictionary<string, object>>(); // Load the workbook from the file path provided WorkBook workbook = WorkBook.Load(filePath); // Access the first worksheet in the workbook WorkSheet sheet = workbook.WorkSheets[0]; // Retrieve column headers from the first row var headers = new List<string>(); foreach (var header in sheet.Rows[0].Columns) { headers.Add(header.ToString()); } // Loop through each row starting from the second row for (int i = 1; i < sheet.Rows.Count; i++) { // Create a dictionary to store the row data associated with column headers var rowData = new Dictionary<string, object>(); for (int j = 0; j < headers.Count; j++) { rowData[headers[j]] = sheet.Rows[i][j].Value; } data.Add(rowData); } return data; } } using IronXL; using System; using System.Collections.Generic; public class ExcelReader { public static List<Dictionary<string, object>> ReadExcelFile(string filePath) { // Initialize a list to store data from Excel var data = new List<Dictionary<string, object>>(); // Load the workbook from the file path provided WorkBook workbook = WorkBook.Load(filePath); // Access the first worksheet in the workbook WorkSheet sheet = workbook.WorkSheets[0]; // Retrieve column headers from the first row var headers = new List<string>(); foreach (var header in sheet.Rows[0].Columns) { headers.Add(header.ToString()); } // Loop through each row starting from the second row for (int i = 1; i < sheet.Rows.Count; i++) { // Create a dictionary to store the row data associated with column headers var rowData = new Dictionary<string, object>(); for (int j = 0; j < headers.Count; j++) { rowData[headers[j]] = sheet.Rows[i][j].Value; } data.Add(rowData); } return data; } } $vbLabelText $csharpLabel 正在連線到 SQL Server 使用 System.Data.SqlClient 命名空間中的 SqlConnection 類別來建立與 SQL Server 的連線。 請確保您擁有正確的連接字串,該字串通常由資料庫名稱、伺服器名稱和身份驗證資訊組成。 以下範例介紹如何連線到 SQL Server 資料庫並新增資料。 using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; public class SqlServerConnector { private string connectionString; // Constructor accepts a connection string public SqlServerConnector(string connectionString) { this.connectionString = connectionString; } // Inserts data into the specified table public void InsertData(Dictionary<string, object> data, string tableName) { using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Construct an SQL INSERT command with parameterized values to prevent SQL injection var columns = string.Join(",", data.Keys); var parameters = string.Join(",", data.Keys.Select(key => "@" + key)); string query = $"INSERT INTO {tableName} ({columns}) VALUES ({parameters})"; using (SqlCommand command = new SqlCommand(query, connection)) { // Add parameters to the command foreach (var kvp in data) { command.Parameters.AddWithValue("@" + kvp.Key, kvp.Value ?? DBNull.Value); } // Execute the command command.ExecuteNonQuery(); } } } } using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; public class SqlServerConnector { private string connectionString; // Constructor accepts a connection string public SqlServerConnector(string connectionString) { this.connectionString = connectionString; } // Inserts data into the specified table public void InsertData(Dictionary<string, object> data, string tableName) { using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Construct an SQL INSERT command with parameterized values to prevent SQL injection var columns = string.Join(",", data.Keys); var parameters = string.Join(",", data.Keys.Select(key => "@" + key)); string query = $"INSERT INTO {tableName} ({columns}) VALUES ({parameters})"; using (SqlCommand command = new SqlCommand(query, connection)) { // Add parameters to the command foreach (var kvp in data) { command.Parameters.AddWithValue("@" + kvp.Key, kvp.Value ?? DBNull.Value); } // Execute the command command.ExecuteNonQuery(); } } } } $vbLabelText $csharpLabel 將IronXL與 SQL Server 結合使用 一旦建立了讀取 Excel 檔案並將資料插入 SQL 資料庫的邏輯,就將這些功能整合起來以完成匯入過程。 接下來的應用程式會從 Excel 檔案接收訊息,並將其新增至 Microsoft SQL Server 資料庫。 using System; using System.Collections.Generic; class Program { static void Main(string[] args) { // Define the path to the Excel file, SQL connection string, and target table name string excelFilePath = "path_to_your_excel_file.xlsx"; string connectionString = "your_sql_server_connection_string"; string tableName = "your_table_name"; // Read data from Excel List<Dictionary<string, object>> excelData = ExcelReader.ReadExcelFile(excelFilePath); // Create an instance of the SQL connector and insert data SqlServerConnector sqlConnector = new SqlServerConnector(connectionString); foreach (var row in excelData) { sqlConnector.InsertData(row, tableName); } Console.WriteLine("Data import completed successfully."); } } using System; using System.Collections.Generic; class Program { static void Main(string[] args) { // Define the path to the Excel file, SQL connection string, and target table name string excelFilePath = "path_to_your_excel_file.xlsx"; string connectionString = "your_sql_server_connection_string"; string tableName = "your_table_name"; // Read data from Excel List<Dictionary<string, object>> excelData = ExcelReader.ReadExcelFile(excelFilePath); // Create an instance of the SQL connector and insert data SqlServerConnector sqlConnector = new SqlServerConnector(connectionString); foreach (var row in excelData) { sqlConnector.InsertData(row, tableName); } Console.WriteLine("Data import completed successfully."); } } $vbLabelText $csharpLabel 該類別負責使用IronXL從給定的 Excel 檔案中讀取資料。 ReadExcelFile 函數載入 Excel 工作簿,開啟第一個工作表,並透過循環遍歷資料工作表的行來收集資料。 為了方便處理表格,資訊保存在字典清單中。 此類會將資料插入指定的資料庫表中,同時也會管理與 SQL Server 資料庫的連線。 InsertData 方法採用參數化查詢來防止 SQL 注入,並根據字典的鍵(代表列名)動態建立 SQL INSERT 查詢。 使用 ExcelReader 類別從 Excel 檔案讀取資料到 SQL 表中,並使用 SqlServerConnector 類別將每一行插入 SQL Server 表中,Main 函數管理整個流程。 錯誤處理和最佳化對於確保穩健且高效的導入過程至關重要。 實作健全的錯誤處理機制可以管理諸如檔案遺失、資料格式無效和 SQL 異常等潛在問題。 以下是加入錯誤處理的範例。 try { // Insert the importing logic here } catch (Exception ex) { Console.WriteLine("An error occurred: " + ex.Message); } try { // Insert the importing logic here } catch (Exception ex) { Console.WriteLine("An error occurred: " + ex.Message); } $vbLabelText $csharpLabel 結論 最後,在.NET應用程式中管理 Excel 檔案的一種有效且可靠的方法是使用 C# 和IronXL將資料從 Excel 匯入到 MS SQL 資料庫中。 IronXL相容於多種 Excel 格式,並具有強大的功能,無需安裝 Microsoft Excel 即可輕鬆讀取和寫入 Excel 資料。 透過將 System.Data.SqlClient 與IronXL集成,開發人員可以使用參數化查詢輕鬆地在 SQL Server 之間移動數據,從而提高安全性並防止 SQL 注入。 最後,將IronXL和Iron Software新增至您的.NET開發工具集中,可以有效率地操作 Excel、建立 PDF、進行 OCR 和使用條碼。 將 Iron Software 的靈活套件與 IronXL 的易用性、互通性和效能相結合,可確保簡化開發流程並提高應用程式功能。 憑藉清晰的授權選項和可根據專案需求量身定制的方案,開發人員可以自信地選擇合適的模式。 利用這些優勢,開發人員可以有效地應對各種難題,同時保持合規性和開放性。 常見問題解答 使用 C# 將 Excel 數據匯入 SQL Server 的最佳方法是什麼? 使用 IronXL 庫,您可以通過讀取 Excel 文件並將數據插入數據庫,高效地將 Excel 數據匯入 SQL Server,而不需要安裝 Microsoft Excel。 如何在 C# 中不使用 Microsoft Excel 讀取 Excel 文件? IronXL 允許您在 C# 中讀取 Excel 文件而無需安裝 Microsoft Excel。您可以加載 Excel 工作簿、訪問工作表,並使用簡單的方法提取數據。 在 C# 應用程序中將 Excel 文件連接到 SQL Server 的步驟是什麼? 首先,使用 IronXL 讀取 Excel 文件。然後,使用 SqlConnection 類建立到 SQL Server 的連接,並使用 SqlCommand 將數據插入 SQL 數據庫。 為什麼應該在 .NET 應用程序中使用 IronXL 進行 Excel 操作? IronXL 提供高效的數據處理能力,與多個 .NET 平台兼容,並且不需要安裝 Excel,這使得它非常適合服務器端應用程序和處理大型數據集。 在 C# 中如何處理大型 Excel 數據集? IronXL 提供對大型數據集的強健支持,允許您高效地讀取和操作 Excel 文件中的數據,並將其集成到應用程序中,而不會出現性能問題。 在將 Excel 匯入到 SQL Server 時應使用哪些錯誤處理策略? 實施 try-catch 塊來處理潛在錯誤,如文件未找到、數據格式無效或 SQL 異常,以確保順利的匯入過程。 我可以在 C# 應用程序中自動將 Excel 數據匯入 SQL Server 嗎? 是的,使用 IronXL,您可以通過編寫一個 C# 應用程序來自動化匯入過程,該應用程序會讀取 Excel 文件並將數據插入 SQL Server,從而使人工介入最小化。 參數化查詢如何在 C# 中防止 SQL 注入? C# 中的參數化查詢允許您通過在 SQL 命令中使用參數佔位符來安全地將數據插入到 SQL Server,這有助於防止 SQL 注入攻擊。 如何優化將 Excel 數據匯入 SQL Server 的性能? 通過使用批量插入、高效處理大型數據集以使用 IronXL、並確保 SQL Server 連接和命令配置正確來優化性能。 在專案中使用 IronXL 的許可選項是什麼? IronXL 提供靈活的許可選項,根據項目需求量身定制,使開發人員能夠選擇最符合其應用程序需求和預算的計劃。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担產品测测试,產品開發和研究的责任時,Jordi 為持续的產品改進增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 更新2026年3月1日 在ASP.NET C#中下載Excel文件:將數據匯出到XLSX,CSV和更多格式 使用C#和IronXL在ASP.NET Core中下載Excel文件。從MVC控制器中匯出數據到XLSX, CSV和XML,附有MemoryStream和File()返回。包括代碼範例。 閱讀更多 更新2026年3月1日 如何在Blazor中使用IronXL匯出Excel文件 學習如何在Blazor伺服器應用程式中使用IronXL将數據匯出到Excel。此指南涵蓋專案設置、服務設計、條件格式化、多表報告和錯誤處理,附有完整的C#代碼範例。 閱讀更多 更新2026年2月27日 如何在C#中而不是使用StreamReader來讀取Excel文件 了解StreamReader為何無法讀取Excel文件,並學習如何使用IronXL加載來自磁盤或內存流的XLSX和XLS工作簿。 閱讀更多 如何在 C# 中處理 Excel 檔案:圖 1 - 教學指南如何在 C# 中使用 IronXL 自...
更新2026年3月1日 在ASP.NET C#中下載Excel文件:將數據匯出到XLSX,CSV和更多格式 使用C#和IronXL在ASP.NET Core中下載Excel文件。從MVC控制器中匯出數據到XLSX, CSV和XML,附有MemoryStream和File()返回。包括代碼範例。 閱讀更多
更新2026年3月1日 如何在Blazor中使用IronXL匯出Excel文件 學習如何在Blazor伺服器應用程式中使用IronXL将數據匯出到Excel。此指南涵蓋專案設置、服務設計、條件格式化、多表報告和錯誤處理,附有完整的C#代碼範例。 閱讀更多
更新2026年2月27日 如何在C#中而不是使用StreamReader來讀取Excel文件 了解StreamReader為何無法讀取Excel文件,並學習如何使用IronXL加載來自磁盤或內存流的XLSX和XLS工作簿。 閱讀更多