c# - VSTO Office Interop:在运行时处理Office XML

使用Office的XML文件有时可以是快速处理文档的便捷方法。

即搜索PowerPoint文件的ZIP数据并更改文件中的XML。

我想知道是否有一种方法可以从VSTO加载项中访问和处理文档(PowerPoint或其他)的XML,更改是否可以实时反映在当前打开的文档中? (例如,替换字符串时)。

我正在寻找一种不需要重新打开文档的解决方案。

答案很可能是不可能/不受支持的,因为我无法在Office Interop API中找到官方文档。

最佳答案

这应该可以完成工作,但是请记住,即使不需要重新打开文档,文档的全部内容也会重新加载...对于庞大的文档,它会很慢。

对于示例,我正在使用Word文档。

var wordDocument = app.ActiveDocument;
var openXmlFormattedStr = wordDocument.Content.WordOpenXML;
var manipulatedOpenXmlFormattedStr = .....; // do something with the xml
wordDocument.Content.InsertXML(manipulatedOpenXmlFormattedStr, null);


EDIT 2017-12-15:Power Point和Excel互操作不公开对打开xml格式的直接访问。唯一的方法是将.SaveAs与适当的openxml格式一起使用,然后从文件系统中读取内容。