我开发了一个工具,允许您自动化使用数据填充Excel报表的过程。 (使用C#库OpenXML 2.0)
我花了很多时间处理Excel错误" Excel发现了不可读的内容......"打开我自动生成的报告时。我怀疑在格式错误的SharedStringTable中遇到了一个问题 这是我的xml
<x:sst count="1" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:si>
<x:t>asdd</x:t>
</x:si>
这里是在Excel中恢复的xml
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
count="35" uniqueCount="1">
<si>
<t>asdd</t>
</si>
什么是计数=&#34; 35&#34;? 这个参数是必需的还是只是为了加快文件打开过程?
原始文档和已恢复文档中的其他可疑差异是我的SharedStringTablePart
的ID<Relationship Type="...sharedStrings" Target="..." Id="R0fd51616d10e4c31" />
并恢复
<Relationship Id="rId6" Type=".../sharedStrings" Target="..."/>
你怎么看?这会导致问题吗?
我使用此代码创建SharedStringTablePart
var sharedTablePart = doc.WorkbookPart.SharedStringTablePart;
if (null == sharedTablePart)
{
sharedTablePart = doc.WorkbookPart.AddNewPart<SharedStringTablePart>();
sharedTablePart.SharedStringTable = new SharedStringTable();
sharedTablePart.SharedStringTable.Count = 0;
}
答案 0 :(得分:0)
我知道这不是你的答案,但是让我告诉你在使用#OpenXml SDK创建Excel文件时我做了什么。
首先,
我没有在代码中生成Excel文件 - 我在Excel中生成了一个Excel文件,并将其用作我用代码更新的模板。
其次,
你知道你不需要使用共享字符串表,对吧?您可以生成在单元格中保留字符串的标记,并且根本不引用SharedStrings。这使得处理Excel文件变得更加容易,而且由于SharedStrings-table是为真正的huuuuuuge电子表格中的优化而设计的,你可能根本不需要它?
我记不起副手了。但如果你有兴趣的话,我很乐意为你查询。
让我知道: - )