是否可以使用Open XML sdk来操作当前在Office应用程序中打开的文档部分(word / ppt)。我知道最简单的方法是使用VSTO,但它很慢并且会使用剪贴板来插入元素,OXML sdk是直接且简单的。
如果有人可以发布一些很棒的代码示例。
提前致谢
勒凯什
答案 0 :(得分:5)
是的,可以使用OpenXML sdk 2修改打开的VSTO文档,然后使用更改的xml更新打开的文档。
http://msdn.microsoft.com/en-us/library/ff191178.aspx
http://code.msdn.microsoft.com/Improve-Automation-415bff13
基本上你从一个范围中获取xml,将其作为流处理,打包,使用包上的sdk,然后通过反转过程插入修改后的xml。
智慧是指sdk的这种常识用法是不可能的。但是,这是错误的。
答案 1 :(得分:0)
如下所示: -
//include the namespace
using DocumentFormat.OpenXml.WordProcessing
//Open and manipulate temp.docx
using (WordprocessingDocument myDoc = WordprocessingDocument.Open("temp.docx", true))
{
//Access main part of document
MainDocumentPart mainPart = myDoc.MainDocumentPart;
//Add new comments part to document
mainPart.AddNewPart<WordprocessingCommentsPart>();
//Delete Styles part within document
mainPart.DeletePart(mainPart.StyleDefinitionsPart);
//Iterate through all custom xml parts within document
foreach (CustomXmlPart customXmlPart in mainPart.CustomXmlParts) {
//DO SOMETHING
}
}
此外,您可以使用LINQ来避免foreach循环。
答案 2 :(得分:0)
我能够使用ClosedXML这样使用Excel文档(在将文件保存到磁盘作为路径excelFileName之后):
if (x*.containsKey("foo").any{it}) {
print("Hello")
}
在我的情况下,我只是阅读文档而不会保存它,但如果需要,您可以将修改后的流写入另一个文件。
答案 3 :(得分:-1)
显然,如果没有Sharepoint,你就无法做到这一点。
根据Zeyad Jarabi / ..
...您需要一个了解如何获取共享锁(如SharePoint或SkyDrive)的平台。如果没有这个概念,那么应用程序和SDK只能采用读或写锁,这会阻止这两项技术访问同一个文件。