使用ClosedXML保存修改后的excel(xlsx)文件时出错

时间:2017-02-23 08:40:59

标签: telerik closedxml

我正在尝试使用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方法收到此异常消息:

  

属性&#39; xfId&#39;应该具有独特的价值。
它的当前价值&#39; 10&#39;   与他人重复。 in / x:styleSheet [1] / x:cellStyles [1] / x:cellStyle [21]
属性&#39; xfId&#39;   应该具有独特的价值。
它的当前价值&#39; 12&#39;与...重复   其他。 in / x:styleSheet [1] / x:cellStyles [1] / x:cellStyle [24]
属性&#39; xfId&#39;   应具有独特的价值。
其当前价值&#39; 50&#39;与...重复   其他。 in / x:styleSheet [1] / x:cellStyles [1] / x:cellStyle [55
Attribute&#39; xfId&#39;   应具有独特的价值。
其当前价值&#39; 50&#39;与...重复   其他。 in / x:styleSheet [1] / x:cellStyles [1] / x:cellStyle [59]&#34;

StackTrace:

  

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

  在ClosedXML.Excel.XLWorkbook.CreatePackage(String filePath,   SpreadsheetDocumentType spreadsheetDocumentType,B ...

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

1 个答案:

答案 0 :(得分:3)

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