Принудительное обновление или визуализация тела документа после изменения пользовательской части XML с помощью WordProcessingDocument в c # - PullRequest
0 голосов
/ 05 июля 2019

Я создал документ DOCX, используя XML в качестве шаблона. Этот XML содержит только запись. Затем, используя C # и WordProcessingDocument, я изменяю пользовательскую часть XML, заменяя ее на XML с той же структурой, но с различными записями. Если я открываю документ с помощью локального Word (версия Office 365), он показывает, что он отображается со всеми записями, но когда я открываю тот же документ в Word OnLine, он показывает «оригинальную» версию документа. Но если я сохраню документ, открытый в локальном Word, а затем открою его в Office OnLine, он покажет правильную версию.

Я распаковал файлы docx (до и после сохранения в локальном Word) и сравнил все файлы. Я понял, что основной документ XML не обновляется новым содержимым из пользовательской части XML, которую я изменил.

    static void TestCustomXMLParts()
    {
        string sourcePath = @"C:\WordTest\template.docx";
        string destinationPath = @"C:\WordTest\document.docx";
        string xmlPath = @"C:\WordTest\data.xml";
        File.Copy(sourcePath, destinationPath, true);
        using (WordprocessingDocument document = WordprocessingDocument.Open(destinationPath, true))
        {
            MainDocumentPart mainPart = document.MainDocumentPart;
            var xmlPart = mainPart.CustomXmlParts.First();
            using (FileStream stream = new FileStream(xmlPath, FileMode.Open))
            {
                xmlPart.FeedData(stream);
            }
            document.Save();
        }
    }

Есть ли способ обновить или визуализировать документ заново, используя библиотеку OpenXML C #?

...