使用 IRONXL 如何在 C# 中導入、讀取和操作 Excel 數據 Jordi Bardia 發表日期:10月 19, 2025 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 許多 C# 開發人員在嘗試讀取 Excel 表格文件時都會遇到一個共同的挑戰:他們信賴的 StreamReader 可以完美地處理文字文件,但卻無法處理 Excel 文檔,這令人費解。 如果你嘗試使用 C# 中的 StreamReader 讀取 Excel 文件,卻只看到亂碼或異常,那麼你並不孤單。 本教學解釋了為什麼 StreamReader 不能直接處理 Excel 文件,並示範了不使用 Excel Interop 的 IronXL 的正確解決方案。 這種混淆通常是因為 Excel 可以開啟 CSV 文件,而 StreamReader 也可以正常開啟 CSV 檔案。 然而,真正的 Excel 檔案(XLSX、XLS)需要採用完全不同的方法。 理解這一區別將為您節省數小時的調試時間,並引導您找到完成這項工作的正確工具。 如何在 C# 中匯入、讀取和操作 Excel 資料:圖 1 - IronXL 為什麼 StreamReader 無法讀取 Excel 檔案? StreamReader 專為純文字檔案設計,使用指定的編碼逐行讀取字元資料。 Excel 檔案雖然看起來像電子表格,但實際上是 StreamReader 無法解釋的複雜二進位或 ZIP 壓縮 XML 結構。 static void Main(string[] args) { // This code will NOT work - demonstrates the problem using (StreamReader reader = new StreamReader("ProductData.xlsx")) { string content = reader.ReadLine(); // read data Console.WriteLine(content); // Outputs garbled binary data } } static void Main(string[] args) { // This code will NOT work - demonstrates the problem using (StreamReader reader = new StreamReader("ProductData.xlsx")) { string content = reader.ReadLine(); // read data Console.WriteLine(content); // Outputs garbled binary data } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 當您執行此類程式碼片段時,您將不會看到電子表格數據,而是會遇到二進位未知數據,例如"PK♥♦"或類似的系統字元。 這是因為 XLSX 檔案是包含多個 XML 檔案的 ZIP 壓縮文件,而 XLS 檔案使用專有的二進位格式。 StreamReader 期望的是純文本,並嘗試將這些複雜的結構解釋為字符,從而導致輸出毫無意義。 範例輸入 如何在 C# 中匯入、讀取和操作 Excel 資料:圖 2 - Excel 輸入 輸出 如何在 C# 中匯入、讀取和操作 Excel 資料:圖 3 - 控制台輸出 現代 Excel 檔案 (XLSX) 包含多個元件:工作表、樣式、共用字串和關係,所有這些都打包在一起。 這種複雜性需要能夠理解 Excel 檔案結構的專用函式庫,這就引出了 IronXL。 如何使用 IronXL 讀取 Excel 檔案? IronXL為使用 C# 讀取 Excel 檔案提供了一個簡單的解決方案。 與 StreamReader 不同,IronXL 了解 Excel 的內部結構,並提供直覺的方法來存取您的資料。 該程式庫支援 Windows、Linux、macOS 和 Docker 容器,使其成為現代跨平台應用程式的理想選擇。 如何在 C# 中匯入、讀取和操作 Excel 資料:圖 4 - 跨平台 首先,透過 NuGet 套件管理器安裝 IronXL: Install-Package IronXL.Excel 如何在 C# 中匯入、讀取和操作 Excel 資料:圖 5 - 安裝 以下是正確讀取Excel檔案的方法: using IronXL; // Load the Excel file WorkBook workbook = WorkBook.Load("sample.xlsx"); WorkSheet worksheet = workbook.DefaultWorkSheet; // Read specific cell values string cellValue = worksheet["A1"].StringValue; Console.WriteLine($"Cell A1 contains: {cellValue}"); // Read a range of cells foreach (var cell in worksheet["A1:C5"]) { Console.WriteLine($"{cell.AddressString}: {cell.Text}"); } using IronXL; // Load the Excel file WorkBook workbook = WorkBook.Load("sample.xlsx"); WorkSheet worksheet = workbook.DefaultWorkSheet; // Read specific cell values string cellValue = worksheet["A1"].StringValue; Console.WriteLine($"Cell A1 contains: {cellValue}"); // Read a range of cells foreach (var cell in worksheet["A1:C5"]) { Console.WriteLine($"{cell.AddressString}: {cell.Text}"); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 這段程式碼可以成功載入您的 Excel 文件,並提供對儲存格值的直接存取。 WorkBook.Load 方法會自動偵測檔案格式(XLSX、XLS、XLSM、CSV),並在內部處理所有複雜的解析。 您可以使用熟悉的 Excel 表示法(例如"A1")或範圍(例如"A1:C5")來存取儲存格,這使得熟悉 Excel 的人能夠直觀地理解程式碼。 如何從記憶體流中讀取Excel? 實際應用中經常需要處理來自資料流而不是磁碟檔案的 Excel 檔案。 常見場景包括處理網頁上傳、從資料庫檢索文件或處理來自雲端儲存的資料。 IronXL能夠優雅地處理這些情況: using IronXL; using System.IO; // Read Excel from a memory stream byte[] fileBytes = File.ReadAllBytes("ProductData.xlsx"); using (MemoryStream stream = new MemoryStream(fileBytes)) { WorkBook workbook = WorkBook.FromStream(stream); WorkSheet worksheet = workbook.DefaultWorkSheet; // Process the data int rowCount = worksheet.RowCount; Console.WriteLine($"The worksheet has {rowCount} rows"); // Read all data into a new DataTable, return dt var dataTable = worksheet.ToDataTable(false); // Return DataTable row count Console.WriteLine($"Loaded {dataTable.Rows.Count} data rows"); } using IronXL; using System.IO; // Read Excel from a memory stream byte[] fileBytes = File.ReadAllBytes("ProductData.xlsx"); using (MemoryStream stream = new MemoryStream(fileBytes)) { WorkBook workbook = WorkBook.FromStream(stream); WorkSheet worksheet = workbook.DefaultWorkSheet; // Process the data int rowCount = worksheet.RowCount; Console.WriteLine($"The worksheet has {rowCount} rows"); // Read all data into a new DataTable, return dt var dataTable = worksheet.ToDataTable(false); // Return DataTable row count Console.WriteLine($"Loaded {dataTable.Rows.Count} data rows"); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel WorkBook.FromStream 方法接受任何流類型,無論是 MemoryStream、FileStream 或網路流。 這種靈活性使您無需先將 Excel 檔案儲存到磁碟即可處理來自各種來源的檔案。此範例還示範如何將工作表資料轉換為 DataTable,DataTable 可以與資料庫和資料綁定場景無縫整合。 輸出 如何在 C# 中匯入、讀取和操作 Excel 資料:圖 6 - 從 MemoryStream 輸出讀取 Excel 數據 何時使用物件傳送器讀取資料? 在事件驅動程式設計中使用此程式碼的情況下(例如,在 Windows Forms 或 ASP.NET 中處理檔案上傳按鈕),該方法簽章通常包含諸如 object sender 和 EventArgs 之類的參數。 此上下文可確保 Excel 處理邏輯與 UI 或服務事件正確關聯。 如何在 C# 中匯入、讀取和操作 Excel 資料:圖 7 - 功能 如何在Excel和CSV之間進行轉換? 雖然 StreamReader 可以處理 CSV 文件,但您經常需要在 Excel 和 CSV 格式之間進行轉換。 IronXL 讓這種轉換變得非常簡單: using IronXL; // Load an Excel file and save as CSV WorkBook workbook = WorkBook.Load("data.xlsx"); workbook.SaveAsCsv("output.csv"); // Load a CSV file and save as Excel WorkBook csvWorkbook = WorkBook.LoadCSV("input.csv"); csvWorkbook.SaveAs("output.xlsx"); // Export specific worksheet to CSV WorkSheet worksheet = workbook.WorkSheets[0]; worksheet.SaveAsCsv("worksheet1.csv"); using IronXL; // Load an Excel file and save as CSV WorkBook workbook = WorkBook.Load("data.xlsx"); workbook.SaveAsCsv("output.csv"); // Load a CSV file and save as Excel WorkBook csvWorkbook = WorkBook.LoadCSV("input.csv"); csvWorkbook.SaveAs("output.xlsx"); // Export specific worksheet to CSV WorkSheet worksheet = workbook.WorkSheets[0]; worksheet.SaveAsCsv("worksheet1.csv"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 這些轉換操作會在變更檔案格式的同時保留您的資料。 將 Excel 轉換為 CSV 時,IronXL 預設會將第一個工作表展平,但您可以指定要匯出的工作表。 將 CSV 檔案轉換為 Excel 檔案會產生格式正確的電子表格,該電子表格可以保留資料類型,並支援將來進行格式設定和新增公式。 結論 StreamReader 無法處理 Excel 文件,其根本原因在於純文字與 Excel 複雜的文件結構之間存在根本差異。 雖然 StreamReader 可以完美地處理 CSV 和其他文字格式,但真正的 Excel 檔案需要像 IronXL 這樣能夠理解其中二進位和 XML 結構的專用程式庫。 IronXL 憑藉其直覺的 API、全面的格式支援和無縫的串流處理功能,提供了一個優雅的解決方案。 無論您是建立 Web 應用程式、桌面軟體或雲端服務,IronXL 都能在所有平台上可靠地處理 Excel 檔案。 如何在 C# 中匯入、讀取和操作 Excel 資料:圖 8 - 許可 準備好開始正確使用Excel檔案了嗎? 下載最符合您專案需求的 IronXL 免費試用版。 常見問題解答 為什麼 StreamReader 不能直接在 C# 中處理 Excel 檔案? StreamReader 是專為文字檔所設計,並不支援 Excel 檔案的二進位格式,因此當您使用它來讀取 Excel 文件時,可能會遇到亂碼或異常。相反,建議使用 IronXL.Excel 之類的函式庫來正確處理 Excel 檔案。 在 C# 中匯入 Excel 資料的建議方式是什麼? 在 C# 中匯入 Excel 資料的建議方式是使用 IronXL.Excel。它允許開發人員讀取和操作 Excel 檔案,而不需要 Excel Interop,提供更直接和有效率的解決方案。 如果不使用 Excel Interop,我可以在 C# 中操作 Excel 檔案嗎? 是的,您可以使用 IronXL.Excel 在 C# 中操作 Excel 檔案,而無需 Excel Interop。它提供了一種在 C# 應用程式中直接處理 Excel 文件的無縫方式。 使用 IronXL.Excel 處理 Excel 檔案有哪些好處? IronXL.Excel 具備多項優點,包括無需 Microsoft Excel 即可讀寫 Excel 檔案、支援各種 Excel 格式,以及可簡化資料處理工作的強大 API。 IronXL 是否支援讀取複雜資料類型的 Excel 檔案? 是的,IronXL.Excel 支援讀取具有複雜資料類型的 Excel 檔案,讓您可以在 C# 應用程式中有效率地處理多樣化的資料結構。 IronXL.Excel 如何改善以 C# 語言處理 Excel 檔案的流程? IronXL.Excel 簡化了處理 Excel 檔案的流程,提供簡單易用的介面,不需要 Excel Interop,降低程式碼複雜度,並提升效能。 是否可以使用 IronXL 讀寫不同格式的 Excel 檔案? 是的,IronXL.Excel 支援多種 Excel 檔案格式,例如 XLSX、XLS、CSV 等,讓您可以毫不費力地讀取和寫入各種格式的檔案。 IronXL 能有效率地處理大型 Excel 檔案嗎? IronXL.Excel 專為有效率地處理大型 Excel 檔案而設計,提供強大的效能,並在檔案作業期間將記憶體使用量降至最低。 是什麼讓 IronXL 成為處理 Excel 檔案的 C# 開發人員的合適選擇? IronXL 是 C# 開發人員的合適選擇,因為它提供了一套全面的功能,可輕鬆讀取、寫入和處理 Excel 檔案,而不需要 Microsoft Excel 或複雜的互操作依賴。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 發表日期 12月 19, 2025 如何使用 C# Interop 與 IronXL 在 Excel 中建立資料透視表 在無需 Office 依賴的情況下在 C# 中構建 Excel 樞紐分析表。IronXL 對無需 Excel Interop 的樞紐型報告創建提供了強大的數據操作功能。 閱讀更多 發表日期 12月 18, 2025 使用 IronXL 將 C# DataGridView 匯出到 Excel,並帶有列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多 發表日期 12月 18, 2025 如何在 C# 中使用 IronXL 創建 Excel 生成報告 使用 IronXL 在 C# 中創建 Excel 報告生成。學習構建擁有格式化公式和數據庫集成的專業報告。 閱讀更多 如何使用 IronXL 的 .NET Core CSV 讀取器如何使用 StreamReader 在 C# ...
發表日期 12月 19, 2025 如何使用 C# Interop 與 IronXL 在 Excel 中建立資料透視表 在無需 Office 依賴的情況下在 C# 中構建 Excel 樞紐分析表。IronXL 對無需 Excel Interop 的樞紐型報告創建提供了強大的數據操作功能。 閱讀更多
發表日期 12月 18, 2025 使用 IronXL 將 C# DataGridView 匯出到 Excel,並帶有列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多
發表日期 12月 18, 2025 如何在 C# 中使用 IronXL 創建 Excel 生成報告 使用 IronXL 在 C# 中創建 Excel 報告生成。學習構建擁有格式化公式和數據庫集成的專業報告。 閱讀更多