Я пытаюсь дублировать содержимое DOCX файлов и сохранять их в том же файле, используя OpenXML в C#C# Дубликат DOCX файлов Использование OpemXML
Вот код:
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(wordFileNamePath, true))
{
foreach(OpenXmlElement element in wordDoc.MainDocumentPart.Document.ChildElements)
{
OpenXmlElement cloneElement = (OpenXmlElement)element.Clone();
wordDoc.MainDocumentPart.Document.Append(cloneElement);
}
wordDoc.MainDocumentPart.Document.Save();
}
код работает отлично и делает то, что мне нужно. Моя проблема в том, что полученный файл docx частично поврежден. Когда я открываю файл, я получаю следующие два сообщения:
Нажав «ОК», затем «Да» откроет файл нормально. Тем не менее, файл продолжает быть поврежденным до тех пор, пока я не сохраню его (с тем же или с другим именем). Вот как фиксируется новый сохраненный файл.
Используя инструмент производительности Open XML SDK 2.5 для Microsoft Office, я могу проверить файл и увидеть отраженный код. Проверка файла даст следующие 5 ошибок:
Так что я думаю, что функция «Клон», который я использую в своем коде копирует элемент, как это так, когда он прилагается к документу, некоторые идентификаторы происходят дублирования.
Любая идея получить надлежащий рабочий файл DOCX после дублирования самого себя? Любой альтернативный код оценивается.
Да, предположим, у вас есть изображение, текст и любой элемент. Я ожидаю, что они будут повторены (добавлены) к документу. – yazanpro
@yazanpro, тогда вы должны брать только элементы из тела. Что-то вроде: 'wordDoc.MainDocumentPart.Document.Body.ChildElements'. И добавить их к телу 'wordDoc.MainDocumentPart.Document.Body.Append (cloneElement);' – jn1kk
Вы имеете в виду: использование (WordprocessingDocument wordDoc = WordprocessingDocument.Open (wordFileNamePath, правда)) { Еогеаспа (OpenXmlElement элемента в wordDoc. MainDocumentPart.Document.Body.ChildElements) { OpenXmlElement cloneElement = (OpenXmlElement) element.Clone(); wordDoc.MainDocumentPart.Document.Body.Append (cloneElement); } wordDoc.MainDocumentPart.Document.Save(); } У меня такая же проблема – yazanpro