Мой код предназначен для создания документа 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\"."}
Что это значит? Как я могу это решить?
Какие именно шаги вы использовали, чтобы превратить это в DOCX? –
Из Office 2013 'Сохранить как -> .docx' – Emaborsa
Ну, из сообщения об ошибке, которое вы показываете, документ был сохранен как Word 2003 XML, а не как Word 2013 docx (Word Open XML). Возможно, файл нужно снова открыть в интерфейсе Word и в функции CONVERT, либо в VBA, либо с помощью File/Convert в пользовательском интерфейсе. –