打开XML SDK以编辑活动文档

时间:2010-03-14 13:18:44

标签: openxml office-2007

是否可以使用Open XML sdk来操作当前在Office应用程序中打开的文档部分(word / ppt)。我知道最简单的方法是使用VSTO,但它很慢并且会使用剪贴板来插入元素,OXML sdk是直接且简单的。

如果有人可以发布一些很棒的代码示例。

提前致谢
勒凯什

4 个答案:

答案 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只能采用读或写锁,这会阻止这两项技术访问同一个文件。