You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免IronXL保存Excel 97-2003(.xls)文件时出现损坏报错?

问题描述

我有一个基于.NET Framework 4.8的C#应用,正在使用IronXL.Excel 2025.2.5读写Excel 97-2003格式(.xls)的文件,该格式无法更换。编写的测试脚本能正常读取文件并修改保存,但打开文件时会出现“We found a problem...”报错,手动保存后报错消失,但这会给客户造成困扰。需要实现无报错的修改保存,同时求推荐支持.xls文件的NuGet包(已试过ClosedXML、EPPlus,均不支持)。

测试代码

string filePath = @"C:\TEMP\Test.xls";

WorkBook workBook = WorkBook.Load(filePath);

WorkSheet worksheet = workBook.WorkSheets[0];

for (int row = 1; row < 10000; row++)
{
    string cell = $@"A{row}";
    string cellValue = worksheet[cell].ToString();
    if (cellValue == "")
    {
        worksheet[cell].Value = "New Value Here";
    }
}

workBook.Save();

报错信息

打开保存后的文件时,Excel弹出“We found a problem...”提示框,手动保存文件后报错消失。

解决方案

针对IronXL保存.xls文件报错的问题,可以尝试以下几种方法:

  • 使用SaveAs替代直接Save:直接覆盖原文件可能引发格式兼容性问题,先另存为临时文件再替换原文件:

    string tempPath = @"C:\TEMP\Test_Temp.xls";
    workBook.SaveAs(tempPath);
    // 替换原文件
    File.Delete(filePath);
    File.Move(tempPath, filePath);
    
  • 明确指定Excel格式版本:加载和保存时强制指定为Excel 97-2003格式,避免自动格式转换:

    // 加载时指定格式
    WorkBook workBook = WorkBook.Load(filePath, ExcelFileFormat.XLS);
    // 保存时指定格式
    workBook.SaveAs(filePath, ExcelFileFormat.XLS);
    
  • 清理无效数据:IronXL可能在保存时引入无效格式元素,修改后清理未使用的空行/列:

    // 移除未使用的空行
    worksheet.RemoveEmptyRows();
    // 移除未使用的空列
    worksheet.RemoveEmptyColumns();
    workBook.Save();
    
支持.xls格式的NuGet包推荐

除IronXL外,以下包支持Excel 97-2003(.xls)格式读写:

  • NPOI:Apache开源库,完全支持.xls和.xlsx格式,无需依赖Office,适配.NET Framework 4.8。示例代码:

    // 读取.xls文件
    HSSFWorkbook workbook = new HSSFWorkbook(File.OpenRead(filePath));
    ISheet sheet = workbook.GetSheetAt(0);
    // 修改单元格
    IRow row = sheet.GetRow(0) ?? sheet.CreateRow(0);
    ICell cell = row.GetCell(0) ?? row.CreateCell(0);
    cell.SetCellValue("New Value Here");
    // 保存文件
    using (FileStream fs = File.Create(filePath))
    {
        workbook.Write(fs);
    }
    
  • ExcelDataReader:轻量级开源库,支持读取.xls和.xlsx,搭配ExcelDataWriter可实现写入,适合大数据量场景。

  • Microsoft.Office.Interop.Excel:依赖本地安装的Office Excel,完美兼容.xls格式,但要求客户机器安装Office,性能相对一般,适合小批量操作。

内容的提问来源于stack exchange,提问作者boilers222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 06:29:57