保存OpenXml文档时出现InvalidDataException

时间:2016-03-22 13:07:20

标签: c# exception openxml wordprocessingml

我的代码旨在创建一个docx文档,从更多文档中获取部分并将它们合并为一个。

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();
}

代码只是一个剪辑,它适用于Office 2013创建的docx,但如果文档是doc(由旧版办公室创建)保存为docx,则会失败Office 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\"."}

这是什么意思?我怎么能解决它?

1 个答案:

答案 0 :(得分:0)

在处理之前,您需要将SELECT * FROM sms WHERE sent_time <= DATE_SUB(NOW(), INTERVAL 3 DAY) OR sent_time=0; 文件转换为.doc。为此,您可以使用.docx库。

一些例子here