2013-04-17 2 views
0

Я пытаюсь дублировать содержимое 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 частично поврежден. Когда я открываю файл, я получаю следующие два сообщения: enter image description here

Нажав «ОК», затем «Да» откроет файл нормально. Тем не менее, файл продолжает быть поврежденным до тех пор, пока я не сохраню его (с тем же или с другим именем). Вот как фиксируется новый сохраненный файл.

Используя инструмент производительности Open XML SDK 2.5 для Microsoft Office, я могу проверить файл и увидеть отраженный код. Проверка файла даст следующие 5 ошибок:

enter image description here

Так что я думаю, что функция «Клон», который я использую в своем коде копирует элемент, как это так, когда он прилагается к документу, некоторые идентификаторы происходят дублирования.

Любая идея получить надлежащий рабочий файл DOCX после дублирования самого себя? Любой альтернативный код оценивается.

ответ

-1

Почему бы не быть поврежденным? Вы открываете документ, получаете все дочерние элементы и записываете их в один и тот же документ. Я не уверен, что это должно делать.

+0

Да, предположим, у вас есть изображение, текст и любой элемент. Я ожидаю, что они будут повторены (добавлены) к документу. – yazanpro

+0

@yazanpro, тогда вы должны брать только элементы из тела. Что-то вроде: 'wordDoc.MainDocumentPart.Document.Body.ChildElements'. И добавить их к телу 'wordDoc.MainDocumentPart.Document.Body.Append (cloneElement);' – jn1kk

+0

Вы имеете в виду: использование (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

Смежные вопросы