2016-03-22 6 views
0

Мой код предназначен для создания документа docx, взятия деталей из большего количества документов и их объединения в один.InvalidDataException путем сохранения документа OpenXml

private void CopyContent(WordprocessingDocument sourceDoc, WordprocessingDocument targetDoc) 
{ 
    // copy parts from source document to new document 
    foreach (var part in sourceDoc.Parts) 
     targetDoc.AddPart(part.OpenXmlPart, part.RelationshipId); 

    using (var sr = new StreamReader(sourceDoc.MainDocumentPart.GetStream())) 
    using (var sw = new StreamWriter(targetDoc.MainDocumentPart.GetStream(FileMode.Create))) 
    { 
     sw.Write(sr.ReadToEnd()); 
    } 
    targetDoc.MainDocumentPart.Document.Save(); 
} 

Код только отрезал, он отлично работает для docx созданного офиса 2013, но он не работает, если документ был doc (созданный старой версией офиса) сохраняется как DOCX Офис 2013. Он вызывает следующую ошибку после выполнения targetDoc.MainDocumentPart.Document.Save().

{"The root XML element \"http://purl.oclc.org/ooxml/wordprocessingml/main:document\" in the part is incorrect. The expected root XML element is: \"http://schemas.openxmlformats.org/wordprocessingml/2006/main:document\"."} 

Что это значит? Как я могу это решить?

+0

Какие именно шаги вы использовали, чтобы превратить это в DOCX? –

+0

Из Office 2013 'Сохранить как -> .docx' – Emaborsa

+0

Ну, из сообщения об ошибке, которое вы показываете, документ был сохранен как Word 2003 XML, а не как Word 2013 docx (Word Open XML). Возможно, файл нужно снова открыть в интерфейсе Word и в функции CONVERT, либо в VBA, либо с помощью File/Convert в пользовательском интерфейсе. –

ответ

0

Перед его обработкой необходимо преобразовать файл .doc в .docx. Для этого вы можете использовать библиотеку Microsoft.Office.Interop.Word.

Некоторые примеры here

+0

Но я не загружаю файл doc ... У меня есть файл docx, который был документом. – Emaborsa