跳至页脚内容
使用 IRONXL

ExcelDataReader 写 Excel 文件:为什么不能以及 IronXL 如何解决这个问题

许多开发人员在搜索轻量级的解决方案以在C#中处理Excel文件时发现了ExcelDataReader。 然而,他们很快就会遇到一个基本的限制:尽管其名称暗示着全面的Excel功能,ExcelDataReader却无法写入Excel文件。 这篇有用的文章澄清了这一常见的误解,并将IronXL介绍为一个全面的替代方案,可以无缝地处理Excel 文档的读取和写入。 本指南的重点是帮助您以简单的方式应对Excel写入限制。

在本指南中,您将了解为什么ExcelDataReader不能写入Excel文件,IronXL如何成功解决该限制,以及如何开始,附带工作代码示例。 此外,您还将学习如何转换 CSV 数据、使用数组对象填充列以及使用各种编码选项在不同的文件格式之间传递数据。

ExcelDataReader能写入Excel工作簿数据吗?

ExcelDataReader 无法写入 Excel 文件:原因及 IronXL 的解决方案:图 1 - ExcelDataReader

不,ExcelDataReader无法写入Excel文件。 该库专为读取各种格式(XLS、XLSX、CSV)的Excel文档而设计,虽然它是一种为在C#中读取Excel文件而编写的快速库,但这实际上就是它的全部功能。 官方GitHub存储库甚至明确声明这只是一个"读取Microsoft Excel文件的库",没有写入能力。 安装该软件包并在项目中引用 DLL 后,您会发现它无法处理写入编码、跳过行以修复数据问题,也无法处理泛型集合中的列名和 int 值。

以下是 ExcelDataReader 的功能,它需要一个新的ExcelReaderConfiguration实例来处理服务器部署的文件路径和内存设置:

using ExcelDataReader;
using System.IO;
// ExcelDataReader can ONLY read files
using (var stream = File.Open("data.xlsx", FileMode.Open, FileAccess.Read))
{
    using (var reader = ExcelReaderFactory.CreateReader(stream))
    {
        // Read data from Excel
        while (reader.Read())
        {
            var value = reader.GetString(0); // Read cell value
        }
        // But there's no way to write back to the file
    }
}
using ExcelDataReader;
using System.IO;
// ExcelDataReader can ONLY read files
using (var stream = File.Open("data.xlsx", FileMode.Open, FileAccess.Read))
{
    using (var reader = ExcelReaderFactory.CreateReader(stream))
    {
        // Read data from Excel
        while (reader.Read())
        {
            var value = reader.GetString(0); // Read cell value
        }
        // But there's no way to write back to the file
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此代码演示了ExcelDataReader的只读特性。 该库可以高效地从 Excel 文件中提取数据,但没有提供Write()Save()SetCellValue()等方法。 需要创建报告、更新电子表格、生成新的 Excel 文件、记录信息、将结果发布到其他系统、对单元格进行注释、实现 LINQ 查询或填充标签和元数据的开发人员必须另寻他处。

IronXL如何解决写入问题?

! ExcelDataReader 写入 Excel 文件:为什么无法写入以及 IronXL 如何解决此问题:图 2 - IronXL

IronXL提供完整的Excel操作能力,使开发人员能够在没有Microsoft Office依赖的情况下读取、创建、编辑和保存Excel文件。 与只读解决方案不同,IronXL将Excel文件视为完全可编辑的文档。 这种简单直接的方法可以让你处理 CSV 数据,在不同格式之间进行转换,并无缝地填充表格。

如何开始使用IronXL?

安装IronXL只需一个NuGet命令:

Install-Package IronXL.Excel

基本实现遵循熟悉的模式:

using IronXL;
// Your first IronXL application
class Program
{
    static void Main()
    {
        // Create workbook
        WorkBook workBook = WorkBook.Create();
        WorkSheet sheet = workBook.CreateWorkSheet("Data");
        // Write your data
        sheet["A1"].Value = "Hello Excel";
        // Save to file
        workBook.SaveAs("output.xlsx");
    }
}
using IronXL;
// Your first IronXL application
class Program
{
    static void Main()
    {
        // Create workbook
        WorkBook workBook = WorkBook.Create();
        WorkSheet sheet = workBook.CreateWorkSheet("Data");
        // Write your data
        sheet["A1"].Value = "Hello Excel";
        // Save to file
        workBook.SaveAs("output.xlsx");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

在此处,我们轻松创建了一个新的Excel工作簿和一个名为"Data"的新Excel工作表。 在这个新工作表中,您可以轻松地添加来自CSV文件、DataTable、数据集及其他数据源的数据。 .NET核心平台支持Sep分隔文件和各种编码格式。

对于从ExcelDataReader迁移的开发人员,过渡涉及将只读操作替换为IronXL的读写方法。 学习曲线很小,因为IronXL使用直观的语法,类似于Excel的单元格引用系统。

立即开始免费试用,探索 IronXL 的完整功能集,或查看全面的文档以获取详细示例和 API 参考。

基本写入操作

使用 IronXL创建和写入 Excel 文件非常简单:

using IronXL;
// Create a new Excel file
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Report");
// Write values to specific cells
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["A2"].Value = "Widget";
sheet["B2"].Value = 100;
// Save the file
workBook.SaveAs("inventory.xlsx");
using IronXL;
// Create a new Excel file
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Report");
// Write values to specific cells
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["A2"].Value = "Widget";
sheet["B2"].Value = 100;
// Save the file
workBook.SaveAs("inventory.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此示例创建了一个新的工作簿,向特定单元格添加数据,并保存结果。 直观的单元格寻址( sheet["A1"] )使代码易于阅读和维护。

! ExcelDataReader 写入 Excel 文件:为什么无法写入以及 IronXL 如何解决此问题:图 3 - 基本写入示例输出

高级写入功能

IronXL不仅限于基本的单元格写入,还支持复杂的Excel操作:

// Write formulas
sheet["C1"].Value = "Total";
sheet["C2"].Formula = "=B2*1.5";
// Write ranges efficiently
sheet["A3:A10"].Value = "Item";
// Apply formatting while writing
sheet["B2"].Style.Font.Bold = true;
sheet["B2"].Style.BackgroundColor = "#FFFF00";
// Write formulas
sheet["C1"].Value = "Total";
sheet["C2"].Formula = "=B2*1.5";
// Write ranges efficiently
sheet["A3:A10"].Value = "Item";
// Apply formatting while writing
sheet["B2"].Style.Font.Bold = true;
sheet["B2"].Style.BackgroundColor = "#FFFF00";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这些功能使开发人员能够以编程方式生成专业的 Excel 报告,包括计算和格式设置。 对于条件格式设置Excel 图表等更高级的功能,IronXL 提供了全面的文档。

ExcelDataReader 无法写入 Excel 文件:原因及 IronXL 的解决方案:图 4 - 包含公式和格式的扩展写入示例输出

实现上的区别是什么?

在比较典型工作流程时,基本的区别就显而易见。 考虑一个常见需求:从一个Excel文件读取数据并创建一个修改版本。

ExcelDataReader方法(不完整)

// Read with ExcelDataReader
List<string> data = new List<string>();
using (var stream = File.Open("source.xlsx", FileMode.Open))
{
    using (var reader = ExcelReaderFactory.CreateReader(stream))
    {
        while (reader.Read())
        {
            data.Add(reader.GetString(0));
        }
    }
}
// Cannot write back to Excel - need another library!
// Read with ExcelDataReader
List<string> data = new List<string>();
using (var stream = File.Open("source.xlsx", FileMode.Open))
{
    using (var reader = ExcelReaderFactory.CreateReader(stream))
    {
        while (reader.Read())
        {
            data.Add(reader.GetString(0));
        }
    }
}
// Cannot write back to Excel - need another library!
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

用IronXL写入和读取Microsoft Excel文件:完整解决方案

// Read and write with IronXL
WorkBook workBook = WorkBook.Load("source.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;
// Read existing data
string originalValue = sheet["A1"].StringValue;
// Modify and add new data
sheet["A1"].Value = originalValue.ToUpper();
sheet["B1"].Value = DateTime.Now;
// Save as new file
workBook.SaveAs("modified.xlsx");
// Read and write with IronXL
WorkBook workBook = WorkBook.Load("source.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;
// Read existing data
string originalValue = sheet["A1"].StringValue;
// Modify and add new data
sheet["A1"].Value = originalValue.ToUpper();
sheet["B1"].Value = DateTime.Now;
// Save as new file
workBook.SaveAs("modified.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronXL为所有Excel操作提供统一的API。 这消除了混合多个库的需求,降低了复杂性和潜在的兼容性问题。

何时应该使用IronXL?

当应用程序需要以下情况时,IronXL变得必不可少:

  • 报告生成:从数据库查询或API响应创建Excel报告
  • 数据导出:将应用程序和CSV数据转换为用户的Excel格式
  • 模板处理:用动态数据填充Excel模板
  • 电子表格自动化:用新信息更新现有文件
  • 批量处理:编程修改多个Excel文件

这些场景仅凭ExcelDataReader是无法实现的。 虽然ExcelDataReader擅长从现有文件中提取数据,但任何需要生成或修改Excel文档的请求都需要一个具有写入能力的库。 当您需要实现能够转换数据、从数组对象填充列名、解决格式问题、记录更改或将结果发布到服务器的解决方案时,IronXL提供了完整的工具集。

商用应用程序特别受益于IronXL的综合功能。 无论是生成发票、创建库存报告还是制作财务报表,读取源数据和写入格式化输出的能力简化了开发。

结论

ExcelDataReader具有特定用途:高效读取Excel文件。 然而,现代应用程序通常需要双向的Excel交互。 IronXL通过提供一个单一的、连贯的库,满足了这一需求,提供完整的Excel操作能力。 开发人员不必结合多种工具或绕过限制,而是可以使用一个一致的API来处理所有Excel操作。

准备好超越只读的Excel操作了吗? 首先使用 IronXL 的免费试用版,体验在 .NET 应用程序中对 Excel 的全面控制。 对于生产环境应用,请考虑包含专属支持和灵活部署方式的许可选项

常见问题解答

ExcelDataReader 可以写入 Excel 文件吗?

不,ExcelDataReader 不能写入 Excel 文件。它专门用于读取 Excel 数据。

使用 ExcelDataReader 有什么局限性?

ExcelDataReader 的一个重大局限性在于它无法写入 Excel 文件,尽管它的名称暗示它具有完整的 Excel 功能。

如何克服 ExcelDataReader 的写入限制?

您可以使用 IronXL 来克服此限制,IronXL 允许在 C# 中读取和写入 Excel 文件。

IronXL 提供了哪些 ExcelDataReader 没有的功能?

IronXL 提供全面的 Excel 文件处理功能,包括读取和写入,而 ExcelDataReader 则不具备这些功能。

IronXL 是 C# 中处理 Excel 文件的一个好替代方案吗?

是的,IronXL 是一个很好的替代方案,因为它提供了在 C# 中读取和写入 Excel 文件的完整功能。

为什么开发人员会选择 IronXL 而不是 ExcelDataReader?

开发人员可能会选择 IronXL 而不是 ExcelDataReader,因为它能够无缝地处理 Excel 文档的读取和写入。

使用 IronXL 操作 Excel 文件有什么好处?

IronXL 具备读取和写入 Excel 文件的完整功能,使其成为比 ExcelDataReader 更通用、更全面的解决方案。

IronXL 如何处理 Excel 文件写入?

IronXL 提供简单直接的 Excel 文件编写方法,使开发人员能够轻松高效地完成工作。

IronXL 能否同时处理 Excel 文件的读写操作?

是的,IronXL 旨在用 C# 高效地处理 Excel 文件的读取和写入。

使用 ExcelDataReader 之前我应该了解哪些内容?

在使用 ExcelDataReader 之前,请注意它仅支持读取 Excel 文件,不具备写入功能。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。