Я создал документ 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 #?