为什么用npoi编辑后docx文件损坏

时间:2018-09-04 15:34:59

标签: 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

using(FileStream fileStreamNew = new FileStream(@"D:\\test.docx", FileMode.CreateNew)) {
    doc.Write(fileStreamNew);
    fileStreamNew.Close();
}

但是我得到了损坏的文件。当我尝试打开文件时,将显示模式窗口:“很抱歉。我们无法打开test.docx,发现其内容有问题。详细信息:未指定的错误。位置:/word/header1.xml,行:0 ,列:0“

提前谢谢

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

更新:

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

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

更新:

当图像属性“自动换行”具有除“与文本一致”以外的其他值时,会出现问题。就我而言,图像是文本的背景。 (“文字后面”的值)。

2 个答案:

答案 0 :(得分:0)

尝试仅使用常规Stream和System.IO.File读取文件,然后使用FileStream和System.IO.File保存。

How to: Create a File or Folder (C# Programming Guide) C# (CSharp) NPOI.XWPF.UserModel.XWPFDocument Code Examples

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();
}

答案 1 :(得分:0)

不确定您是否还需要它。但我修复了一些与 https://github.com/nissl-lab/npoi/pull/510 中的换行文本图像相关的错误 我无法捕捉到所有案例,如果您发现它没有捕捉到的东西,请告诉我。