VSTO插件 + Open XML

4
我想开发一些插件。这些插件应该使用open xml(不是所有的东西都可以用VSTO实现,Open XML更快),但是有没有可能编辑已打开的文档?例如,我已经打开了PowerPoint演示文稿(或Word文档/Excel电子表格),我想使用Open XML替换一些文本,我可以读取它(从我所了解的来看,阅读是可能的)并在不关闭文件的情况下更新,当然要使用Open XML吗?如果是,怎么做?
有一些feeddata()方法,memory streams,但我不知道如何使用。有人能展示一些例子吗?
3个回答

2

Below code works for me:

Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;

string XML = doc.Content.WordOpenXML;

// XML Changes

doc.Content.InsertXML(XML);

1
        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文档。

0

VSTO和Open XML的目的不同。

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

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

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

Word

Excel

Powerpoint


我知道我不必这样做,但是...我想 :) 有些事情无法使用VSTO(和/或VBA)完成。例如,现在我需要更改形状填充的渐变类型。使用VSTO和VBA都无法实现。但是...使用Open XML可以实现。另一方面,使用Open XML创建/更新某些文档(如果在活动文档上使用它,则更为重要)也更快(但也更复杂)。我已经找到了关于OPC的一些信息,但我需要深入调查。 - buks
@buks 你看到这个了吗?https://social.msdn.microsoft.com/Forums/vstudio/en-US/5c7ffa1c-9643-447c-bb5f-f0db1222d1a7/how-to-change-fill-type-to-gradient-for-shape-in-powerpoint-using-c?forum=vsto - Kiru
我看到了类似的情况,但我没有看到可以更改渐变类型(线性、矩形、路径、径向)的可能性。是的,有可能应用预设渐变等,但在我检查过的预设渐变中,只有径向和线性渐变类型可用,没有可用的矩形和路径渐变类型。 - buks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接