以编程方式将OpenXml文档保存为以前的版本(Word 2007)
我有一些代码可以创建一个要在MS Word中查看的文档。 一些XML通过XSLT运行,然后添加到OpenXML文档中。 生成的文档在Word 2010中看起来很好,但不会在Word 2007中打开,我需要能够支持。 如何创建有效的Word 2007文档?
使用Open XML Format SDK 2.0(版本2.0.5022.0)
using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; ... using (WordprocessingDocument package = WordprocessingDocument.Create(outputPath, WordprocessingDocumentType.Document)) { package.AddMainDocumentPart(); MainDocumentPart mainPart = package.MainDocumentPart; mainPart.Document = new DocumentFormat.OpenXml.Wordprocessing.Document(); // code ... XML translation and append to document package.MainDocumentPart.Document.Save(); }
。
这篇文章有一些有用的信息:
Word 2010和Word 2007之间存在差异,它们遵循OOXML标准的不同版本。 您很可能已包含在Word 2010中有效但Word 2007无法处理的内容。 您没有提供任何有用的信息来说明可能的内容,但是当Word 2010创建文档时,它使用“AlternateContent”标记为不同版本的Word提供不同版本的xml,您可能必须执行相同或限制自己与Word 2007兼容的内容。
我怎么知道提前“Word 2007兼容内容”是什么?
此症状的最常见原因之一是该文档包含Office 14命名空间中的元素/属性。
例如,您可能有这样的标记:
您可能已声明了w14名称空间,但根元素中还需要一个属性:
mc:Ignorable="w14 w15 wp14"
您需要声明此属性:
这也意味着您需要专门使用这些名称空间前缀。
如果这不是问题,如果您愿意,我可以查看您的文档。 我可以很快告诉你为什么它不会在2007年开放。如果你在OpenXMLDeveloper.org的论坛上发帖,问题/样本文件将自动引起我的注意。
干杯,埃里克
在Word 2007中打开我的文档显示该行
造成了问题。 使用OpenXML SDK工具进行validation,我发现了几个导致validation错误的错误:
运行时validation也可以如此处所示执行。
将w:tblPr
更改为:
修复validation错误后,文档仍然无法打开,从而导致tblW标记 :
表的首选宽度是使用
元素中的 元素指定的。 表中的所有宽度都被认为是首选,因为列的宽度可能会发生冲突,表格布局规则可能需要覆盖首选项。 如果省略此元素,则单元格宽度为auto类型。
删除w:tblW
元素修复了问题。
outlook未来,似乎没有任何方法可以validationOpenXml,使其与Word 2007兼容。
上述就是C#学习教程:以编程方式将OpenXml文档保存为以前的版本(Word 2007)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1004937.html