【问题标题】:Error while saving modified excel(xlsx) file with ClosedXML使用 ClosedXML 保存修改后的 excel(xlsx) 文件时出错
【发布时间】:2017-02-23 08:40:59
【问题描述】:

我正在尝试使用 ClosedXML 库和以下代码在现有 excel 文件 (xlsx) 上添加标题行:

public void HandlePrintTitleRows(IList<int> sheetIndex)
{
    using (_workbook = new XLWorkbook(_filePath))
    {
        foreach (var i in sheetIndex)
        {
            IXLWorksheet workSheet = _workbook.Worksheet(i);
            workSheet.PageSetup.SetRowsToRepeatAtTop(1, 5);
        }
        _workbook.SaveAs(_filePath);
    }
}

文件路径来自 SaveFileDialog 对话框,它以 XLWorkbook 的形式打开看似正确。

我从_workbook.SaveAs 方法收到此异常消息:

属性“xfId”应该具有唯一值。
它的当前值“10” 与他人重复。在 /x:styleSheet[1]/x:cellStyles[1]/x:cellStyle[21]
属性 'xfId' 应该具有唯一值。
它的当前值“12”与 其他。在 /x:styleSheet[1]/x:cellStyles[1]/x:cellStyle[24]
属性 'xfId' 应该具有唯一值。
它的当前值“50”与 其他。在 /x:styleSheet[1]/x:cellStyles[1]/x:cellStyle[55
属性 'xfId' 应该具有唯一值。
它的当前值“50”与 其他。在 /x:styleSheet[1]/x:cellStyles[1]/x:cellStyle[59]"

堆栈跟踪:

在 ClosedXML.Excel.XLWorkbook.Validate(SpreadsheetDocument 包)在 C:\Git\ClosedXML\ClosedXML\Excel\XLWorkbook_Save.cs:90 行

在 ClosedXML.Excel.XLWorkbook.CreatePackage(字符串文件路径, SpreadsheetDocumentType 电子表格DocumentType, B...

我不知道如何处理这个问题,所有提示将不胜感激! excel文件之前是Telerik.Windows.Documents.Spreadsheet.Model.Workbook类创建的,可以用excel应用程序正常打开。

【问题讨论】:

    标签: telerik closedxml


    【解决方案1】:

    使用OpenXML SDK Validator 打开您的原始文件(未经ClosedXML 修改),查看它是否是有效文件。如果原始文件中出现验证错误,请修复它们,或者您可以使用 SaveAs(_filePath, false) 重载禁用 ClosedXML 中的验证,风险自负。

    【讨论】:

    • 关于异常中描述的错误以及如何修复它的任何想法?这些是错误节点类型:CellStyle。验证器列出了与上述异常相同的错误。
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2011-10-08
    • 2017-11-04
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多