Почему файл docx поврежден после редактирования с помощью npoi - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу отредактировать файл .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 "

Заранее спасибо

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

UPDATE:

Проблема в файле шаблона. Если я удаляю изображения из верхнего и нижнего колонтитула, ошибка исчезает. Но если я положу шаблоны изображений обратно, ошибка вернется. Есть идеи?

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

UPDATE:

Проблема возникает, когда свойство изображения «Обтекание текстом» имеет значение, отличное от «В строке с текстом». В моем случае, когда изображение является фоном текста. (значение «за текстом»).

1 Ответ

0 голосов
/ 04 сентября 2018

Попробуйте прочитать файл только с использованием обычного Stream и System.IO.File, затем сохраните, используя FileStream и System.IO.File.

Как: создать файл или папку (Руководство по программированию в C #) C # (CSharp) NPOI.XWPF.UserModel.XWPFDocument Примеры кода

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