OpenXML 电子表格创建中的损坏记录

Corrupt records from OpenXML Spreadsheet creation

我正在尝试使用 OpenXML 生成一个简单的 XLSX 文件,但是当我打开我的文件时出现错误,日志文件的 repairedRecord 部分中的唯一信息是:

Repaired Records: Cell information from /xl/worksheets/sheet1.xml part

奇怪的是,我尝试写入的所有单元格都具有我期望它们具有的值。我现在只想写一个 header 行,其中 headers 只是一个 IEnumerable<string>:

using (var doc = SpreadsheetDocument.Create(filename, SpreadsheetDocumentType.Workbook)) {
    var workbookPart = doc.AddWorkbookPart();
    workbookPart.Workbook = new Workbook();

    var worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
    worksheetPart.Worksheet = new Worksheet();

    var sheets = workbookPart.Workbook.AppendChild(new Sheets());
    var sheet = new Sheet {
        Id = workbookPart.GetIdOfPart(worksheetPart),
        SheetId = 1,
        Name = "Sheet 1"
    };
    sheets.Append(sheet);

    workbookPart.Workbook.Save();

    var sheetData = worksheetPart.Worksheet.AppendChild(new SheetData());

    var row = new Row { RowIndex = 1 };

    var column = 1;
    foreach (var header in headers)
        row.AppendChild(new Cell {
            CellReference = GetColumnLetter(column++) + "1",
            DataType = CellValues.SharedString,
            CellValue = new CellValue(header)
        });

    sheetData.Append(row);

    workbookPart.Workbook.Save();
}

如果要插入字符串值,则应使用 CellValues.InlineString

  foreach (var header in headers)
        row.AppendChild(new Cell (new InlineString(new Text(header))) {
            CellReference = GetColumnLetter(column++) + "1",
            DataType = CellValues.InlineString
        });