Изменения, внесенные в документ Word, не отражаются в потоке памяти после его изменения с помощью Open XML в .NET Core.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Изменения, внесенные в документ Word, не отражаются в потоке памяти после его изменения с помощью Open XML в .NET Core.

Сообщение Anonymous »

Я хочу заменить текст в документе Word, который я получаю как byte[], чтобы позже вернуть его в виде потока памяти.
С помощью приведенного ниже кода я пытаюсь изменить слово документ, который я получаю как байт []. При отладке я вижу, что mainPart.Document содержит изменения, внесенные методом replaceText. Но когда я возвращаю выходной поток и загружаю файл, он все еще находится в исходном состоянии. Произведенные изменения отсутствуют. Есть идеи, почему изменения не сохраняются? Любая помощь/идеи приветствуются.

Код: Выделить всё

        public MemoryStream ReplaceTextInWordDocument(byte[] fileBytes, Dictionary replacements)
{
// Create a new MemoryStream for the output
MemoryStream outputStream = new MemoryStream();

// Copy the byte array to the output MemoryStream
outputStream.Write(fileBytes, 0, fileBytes.Length);
outputStream.Position = 0; // Reset the position to the beginning

// Open the Word document from the MemoryStream
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(outputStream, true))
{
MainDocumentPart mainPart = wordDoc.MainDocumentPart;
// Perform replacements in the document
foreach (var replacement in replacements)
{
ReplaceText(mainPart.Document, replacement.Key, replacement.Value);
}

// Save changes to the document
mainPart.Document.Save();

}

// Reset the position of the output stream to the beginning before returning
outputStream.Position = 0;
return outputStream;
}
Я также создал файл непосредственно после запуска метода из выходного потока, чтобы просмотреть результат. Содержание по-прежнему такое же, как и оригинал.

Подробнее здесь: https://stackoverflow.com/questions/790 ... er-modifyi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»