我正在使用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 正如您在代码中看到的那样,我还没有添加任何文本,我相当确定它不是非法字符。任何帮助将不胜感激。
答案 0 :(得分:2)
我能够找出问题所在。首先,使用上面的代码,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};”。可能看起来很简单,但让我很头疼。