C# 为什么使用npoi编辑后docx文件会损坏

C# 为什么使用npoi编辑后docx文件会损坏,c#,docx,npoi,C#,Docx,Npoi,我想编辑.docx文件并使用npoi库 是一个片段: XWPFDocument doc; using( FileStream fileStream = new FileStream(@"D:\\template.docx", FileMode.Open, FileAccess.Read) ) { doc = new XWPFDocument(fileStream); fileStream.Close(); } // here can change doc or do nothing

我想编辑.docx文件并使用npoi库

是一个片段:

XWPFDocument doc;
using( FileStream fileStream = new FileStream(@"D:\\template.docx", FileMode.Open, FileAccess.Read) ) {
doc = new XWPFDocument(fileStream);
    fileStream.Close();
}

// here can change doc or do nothing

using(FileStream fileStreamNew = new FileStream(@"D:\\test.docx", FileMode.CreateNew)) {
    doc.Write(fileStreamNew);
    fileStreamNew.Close();
}
但是我得到了损坏的文件。当我尝试打开文件时,模式窗口显示:“很抱歉,我们无法打开test.docx。我们发现其内容有问题。详细信息:未指定错误。位置:/word/header1.xml,行:0,列:0”

先谢谢你

============================================================

更新:

问题在模板文件中。若我从页眉和页脚中删除图像,那个么错误就会消失。但是如果我把模板图像放回去,错误就会返回。有什么想法吗

=============================================================

更新:


当图像属性“Wrap Text”的值不是“In Line With Text”时,就会出现问题。在我的例子中,当图像是文本的背景时。('behind text'值)。

尝试仅使用常规流和System.IO.file在中读取文件,然后使用FileStream和System.IO.file保存


不确定你是否还需要它。但我修复了一些与中的换行文本图像相关的错误
我无法捕获所有的案例,如果您发现一些未被捕获的内容,请告诉我。

如果您在十六进制编辑器中比较这些文件(我建议不做任何更改),是否有任何明显的差异,例如输出文件都是零?感谢各位的回复。安德鲁,文件大小不同。Ehsan,FileMode.Create无帮助。@rus Ok,在
中使用(FileStream FileStream=new FileStream(@“D:\\template.docx”,FileMode.Open,FileAccess.Read))
行,将
FileAccess.Read更改为
FileAccess.ReadWrite
。这可能对你有帮助。@Ehsan Mohammadi不幸的是,它也没有帮助。@rus你的代码对我来说非常有用。你的NPOI版本是什么?谢谢回复。不幸的是,这并不能解决我的问题。
XWPFDocument doc;
using( Stream fileStream = File.OpenRead("D:\\template.docx") ) {
doc = new XWPFDocument(fileStream);
    fileStream.Close();
}


using(FileStream fileStreamNew = File.Create("D:\\test.docx")) {
    doc.Write(fileStreamNew);
    fileStreamNew.Close();
}