C# OpenXML,SDK中的bug?

C# OpenXML,SDK中的bug?,c#,openxml,openxml-sdk,C#,Openxml,Openxml Sdk,编辑: 正如我在本主题中所解释的,我认为该程序破坏了zip元数据 你知道为什么以及如何修复它吗 当我发现一个非常奇怪的bug时,我正在跟踪这个链接 一旦程序结束,如果我试图打开docx,Word会告诉我文件已损坏。实际上,docx没有损坏。嵌入式电子表格已损坏 导致这种情况的文件是sheet1.xml。除了数据更改外,程序还更改名称空间。但是文件是正确的 如果从docx中提取电子表格,然后从电子表格中提取sheet1.xml文件,最后将该文件注入电子表格,并将电子表格注入docx,则该文件不再

编辑:

正如我在本主题中所解释的,我认为该程序破坏了zip元数据

你知道为什么以及如何修复它吗


当我发现一个非常奇怪的bug时,我正在跟踪这个链接

一旦程序结束,如果我试图打开docx,Word会告诉我文件已损坏。实际上,docx没有损坏。嵌入式电子表格已损坏

导致这种情况的文件是sheet1.xml。除了数据更改外,程序还更改名称空间。但是文件是正确的

如果从docx中提取电子表格,然后从电子表格中提取sheet1.xml文件,最后将该文件注入电子表格,并将电子表格注入docx,则该文件不再损坏

我只是提取sheet1.xml,没有其他内容。我不明白发生了什么。。。也许你们中的一个会有一个解释


提前谢谢

我就是这样修好的。不是更好的方法,但没有更好的解决方案,我与您分享:

首先:打开Word文档并找到图表。找到图表后,检索链接电子表格的名称:

xlsx = chartPart.EmbeddedPackagePart.Uri.OriginalString;
然后,从Word文档中提取电子表格(我使用了.NET4.5API):

然后,我编辑提取的电子表格数据和单词缓存数据,如博客文章中所解释的

最后,我将电子表格添加回word文档:

using (var archivePPT = ZipFile.Open("Test3.docx", ZipArchiveMode.Update))
{
    archivePPT.GetEntry(xlsx.Remove(0, 1)).Delete();
    archivePPT.CreateEntryFromFile("c:\\tmp\\" + xlsx.Split('/').Last(), xlsx.Remove(0,1));
}

如果你怀疑它是一个bug,把它贴在bug跟踪器上。我不知道它是不是bug。如果您找到Microsoft OpenXml bug追踪器,请告诉我^^。
using (var archivePPT = ZipFile.Open("Test3.docx", ZipArchiveMode.Update))
{
    archivePPT.GetEntry(xlsx.Remove(0, 1)).Delete();
    archivePPT.CreateEntryFromFile("c:\\tmp\\" + xlsx.Split('/').Last(), xlsx.Remove(0,1));
}