OpenXML Spreadsheet创建中的损坏记录

时间:2018-04-16 02:15:13

标签: openxml openxml-sdk

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

  

修复记录:来自/xl/worksheets/sheet1.xml部分的单元信息

奇怪的是,我正在尝试编写的所有单元格都具有我期望它们具有的价值。我现在只想写一个标题行,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();
}

1 个答案:

答案 0 :(得分:0)

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

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