使用 IRONXL 如何在 C# 使用 StreamReader 读取 Excel 文件 Curtis Chau 已发布:十月 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)需要采用完全不同的方法。 理解这一区别将为您节省数小时的调试时间,并引导您找到完成这项工作的正确工具。 如何在 VB.NET 中将 DataGridView 导出到 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 期望的是纯文本,并尝试将这些复杂的结构解释为字符,从而导致输出毫无意义。 示例输入 如何在 VB.NET 中将 DataGridView 导出到 Excel:图 2 - Excel 输入 输出 如何在 VB.NET 中将 DataGridView 导出到 Excel:图 3 - 控制台输出 现代 Excel 文件 (XLSX) 包含多个组件:工作表、样式、共享字符串和关系,所有这些都打包在一起。 这种复杂性需要能够理解 Excel 文件结构的专用库,这就引出了 IronXL。 如何使用 IronXL 读取 Excel 文件? IronXL为使用 C# 读取 Excel 文件提供了一个简单的解决方案。 与 StreamReader 不同,IronXL 了解 Excel 的内部结构,并提供直观的方法来访问您的数据。 该库支持 Windows、Linux、macOS 和 Docker 容器,使其成为现代跨平台应用程序的理想选择。 如何在 C# 中使用 StreamReader 读取 Excel 文件:图 4 - 跨平台 首先,通过 NuGet 包管理器安装 IronXL: Install-Package IronXL.Excel 如何在 C# 中使用 StreamReader 读取 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# 中使用 StreamReader 读取 Excel 文件:图 6 何时使用对象发送器读取数据? 在事件驱动编程中使用此代码的情况下(例如,在 Windows Forms 或 ASP.NET 中处理文件上传按钮),该方法签名通常包含诸如 object sender 和 EventArgs 之类的参数。 此上下文可确保 Excel 处理逻辑与 UI 或服务事件正确关联。 如何在 C# 中使用 StreamReader 读取 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# 中使用 StreamReader 读取 Excel 文件:图 8 - 许可 准备好开始正确使用Excel文件了吗? 下载最符合您项目需求的 IronXL 免费试用版。 常见问题解答 为什么StreamReader不能在C#中读取Excel文件? StreamReader是为读取文本文件而设计的,缺乏处理Excel文件的二进制格式的能力,这导致乱码或异常。 什么是 IronXL? IronXL是一个C#库,允许开发人员在不需要Excel Interop的情况下读取、写入和操作Excel文件,提供了更高效和可靠的解决方案。 IronXL如何改善C#中Excel文件的读取? IronXL通过提供访问Excel数据的方法简化了读取Excel文件的过程,而无需复杂的Interop代码或处理文件格式的复杂性。 我可以用IronXL读取未安装Excel的Excel文件吗? 可以,IronXL不需要在系统中安装Microsoft Excel,是处理C#中Excel文件的独立解决方案。 使用 IronXL 比使用 Excel Interop 有什么好处? IronXL更快,消除了安装Excel的需要,并减少了常见于Excel Interop的版本兼容性问题的风险。 IronXL 适合大型 Excel 文件吗? 是的,IronXL经过性能优化,可以有效处理大型Excel文件,适用于处理大量数据的应用。 IronXL支持同时读取.xls和.xlsx格式吗? IronXL支持.xls和.xlsx格式,允许开发人员无缝处理各种Excel文件类型。 如何在我的C#项目中开始使用IronXL? 您可以通过Visual Studio中的NuGet包管理器安装IronXL,并将其集成到您的C#项目中以读取和操作Excel文件。 IronXL常见的使用案例是什么? IronXL的常见使用案例包括从Excel文件中提取数据、生成报告、数据操作以及在C#应用程序中自动化与Excel相关的任务。 IronXL可以用于Web应用程序吗? 可以,IronXL可以在桌面和Web应用程序中使用,为您在项目中实现Excel处理功能提供灵活性。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 相关文章 已发布十二月 19, 2025 如何使用 C# Interop 与 IronXL.Excel 在 Excel 中创建透视表 无需 Office 依赖在 C# 中构建 Excel 数据透视表。IronXL 提供强大的数据处理功能,用于创建透视风格的报告,无需 Excel Interop 复杂化。 阅读更多 已发布十二月 18, 2025 C# 使用 IronXL.Excel 将带列标题的 DataGridView 导出到 Excel 学习如何在将DataGridView数据导出到Excel时保留列头。使用IronXL库的C#逐步教程。 阅读更多 已发布十二月 18, 2025 如何在 C# 中使用 IronXL 创建 Excel 报告 在 C# 中使用 IronXL 进行 Excel 报告生成。学习构建具有格式、公式和数据库集成的专业报告。 阅读更多 如何在 C# 中导入、读取及操作 Excel 数据如何在 C# 中使用 IronXL 读...
已发布十二月 19, 2025 如何使用 C# Interop 与 IronXL.Excel 在 Excel 中创建透视表 无需 Office 依赖在 C# 中构建 Excel 数据透视表。IronXL 提供强大的数据处理功能,用于创建透视风格的报告,无需 Excel Interop 复杂化。 阅读更多
已发布十二月 18, 2025 C# 使用 IronXL.Excel 将带列标题的 DataGridView 导出到 Excel 学习如何在将DataGridView数据导出到Excel时保留列头。使用IronXL库的C#逐步教程。 阅读更多
已发布十二月 18, 2025 如何在 C# 中使用 IronXL 创建 Excel 报告 在 C# 中使用 IronXL 进行 Excel 报告生成。学习构建具有格式、公式和数据库集成的专业报告。 阅读更多