【问题标题】:VSTO Add-in + Open XMLVSTO 插件 + 打开 XML
【发布时间】:2015-06-08 12:16:41
【问题描述】:

我想开发一些插件。这个加载项应该使用 open xml (并非一切都可以使用 VSTO + Open XML 更快),但是是否有可能编辑打开的文档?例如,我打开了 PowerPoint 演示文稿(或 Word doc/Excel 电子表格),我想使用 Open XML 替换一些文本,我可以阅读它(从我阅读的内容来看,阅读是可能的)并在不关闭该文件的情况下进行更新,使用当然是开放 XML?如果是,该怎么做?

有一些feeddata()方法,内存流,但是不知道怎么用。谁能举个例子?

【问题讨论】:

    标签: c# excel vsto powerpoint openxml


    【解决方案1】:

    以下代码对我有用:

    Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
    
    string XML = doc.Content.WordOpenXML;
    
    // XML Changes
    
    doc.Content.InsertXML(XML);
    

    【讨论】:

      【解决方案2】:
              var fileFullName = Globals.ThisAddIn.Application.ActiveDocument.FullName;
      
              Globals.ThisAddIn.Application.ActiveDocument.Close(WdSaveOptions.wdSaveChanges, WdOriginalFormat.wdOriginalDocumentFormat, true);
      
              //edit document using OpenXml here
      
              Globals.ThisAddIn.Application.Documents.Open(fileFullName);
      

      这适用于 Word 文档。

      【讨论】:

        【解决方案3】:

        VSTO 和 Open XML 的目的不同。

        VSTO 基本上是将 Office 扩展到您在 Office 应用程序上下文中运行插件的目的。并且您可以使用 Com 互操作,因为它们已经可用。

        Open XML 用于自动生成或编辑文档、工作簿等您没有安装办公应用程序的地方。例如,在 Asp.net 服务器中,您不需要安装 Office,而是使用 Open XML 来创建、编辑文档、电子表格或 ppt。

        在您的情况下,如果您采用 VSTO 方法,则不需要使用 Open XML sdk。在相应的互操作中使用可用的查找和替换功能。 替换后不要忘记保存文档、xls 或 ppt

        Word

        Excel

        Powerpoint

        【讨论】:

        • 我知道我不必这样做,但是...我想要 :) 使用 VSTO(和/或 VBA)无法完成的事情很少。例如,现在我需要更改形状填充的渐变类型。既不使用 VSTO 也不使用 VBA 是不可能的。但是...可以使用 Open XML 来完成。另一方面,创建/更新(如果在活动文档上使用它更重要)一些文档也使用 Open XML 更快(但也更复杂)。我发现了一些关于 OPC 的信息,但我必须更深入地研究它。
        • 我看到了类似的,我看不出有可能改变渐变类型(线性、矩形、路径、径向)。是的,可以应用预设渐变等,但是在我检查的预设渐变中,只有径向和线性渐变类型,没有可用的矩形和路径渐变类型。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多