gpt4 book ai didi

c# - Excel 中损坏的 OpenXML 电子表格

转载 作者:行者123 更新时间:2023-11-30 23:25:18 25 4
gpt4 key购买 nike

我正在使用 OpenXML (2.5) 创建自定义电子表格。在我使用的 VM 上,我只有 Open Office,其中 OpenXML 电子表格运行良好(具有自定义格式和所有内容)。但是,当将文件移动到装有 Microsoft Office 的计算机时,由于数据损坏,文件的每个版本都无法打开。我删除了所有自定义设置,但结果仍然损坏(在 Open Office 中仍然有效)。

这是我的基本电子表格文件的代码,该文件同样可以在 Open Office 中运行,但在 Excel 中被视为已损坏。

public string CreateGrid()
{
var path = Path.GetTempFileName();
var document = SpreadsheetDocument.Create(path, SpreadsheetDocumentType.Workbook);
var workbookpart = document.AddWorkbookPart();

workbookpart.Workbook.Save();
document.Close();
return path;
}

我收到的错误是“在文本内容中发现无效字符。”线路:1列:1文件偏移:0正如您在代码中看到的那样,我还没有添加任何文本,我相当确定它不是非法字符。任何帮助将不胜感激。

最佳答案

我能够找出问题所在。首先,使用我上面的代码,Excel 在使用 OpenXML 时需要一个完全格式化的文件。这意味着只有一个带有工作簿的文件是不够的,它必须有工作簿、工作表和至少 1 张工作表才能正确打开。我遇到的另一个问题(数据不会在 Excel 中显示)是因为当我向下遍历行时,我并不是每次都创建一个新行。对于尝试与我相同的人,代码应如下所示:

foreach (var temp in tempList)
{
if (cellIdex == 12)
{
cellIdex = 0;
rowIdex = rowIdex + 1;
row = new Row { RowIndex = rowIdex };
sheetData.AppendChild(row);
}
cell = CreateTextCell(ColumnLetter(cellIdex), rowIdex, tempToString(), 3);
row.AppendChild(cell);
cellIdex = cellIdex + 1;
}

要注意的最重要部分是“row = new Row{RowIndex = rowIdex};”。看似简单,却让我头疼不已。

关于c# - Excel 中损坏的 OpenXML 电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37378573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com