如何在整个powerpoint文件中获得相同的形状或图片并替换它们



我正在使用Visual Studio并开发Office加载项。我需要识别相同的形状和图片并替换它们。

我尝试使用OpenXml来实现这一点,但在使用中的文件中似乎无法对其进行修改。它似乎不能作为office加载项使用,因为它不能处理已经打开的文件

我在互联网上搜索了很多小时,但都没有找到方法。请帮帮我。

谢谢

TL;DR: OpenXMLOffice加载项(包括VSTO(是针对不同用例的竞争技术,如果结合使用,可能会导致运行时问题。最好只坚持一个。


我。。。开发office插件。我需要识别相同的形状和图片并替换它们。我尝试使用OpenXml来实现这一点,但它似乎无法在使用中的文件中进行修改

OpenXML是一个API,用于创建/读取/修改遵循当代XML文档格式(如Word 2010(的Office文档(确切地说是Office 2010+(。它是通过直接在文件级操作文档来实现的,而不是使用COM。事实上,它根本不需要在机器上安装Word!这使得OpenXML成为一种与Office文档交互的轻量级方法。

不幸的是,如果OpenXML(或其他基于文件的方法(和Office外接程序(VSTO或其他(都针对同一文档,则它们不适合使用。这是因为文档已经加载到say Word中,并且Word正在承载您的加载项。任何修改代表加载文档的底层文件(包括除Word或Word API之外的任何其他方式的OpenXML(的尝试都会遇到:

共享违反

换句话说:

  1. 若要运行Office加载项,需要首先运行Office应用程序。这被称为托管
  2. 由外接程序编排的对Office文档的操作要求首先将文档加载到Office应用程序中
  3. 任何外部Windows进程或进程内(加载项(操作都不能在Office应用程序中打开基础Office文档文件时直接更改该文件。(外接程序可以使用Office API间接保存到文件,并要求Office应用程序保存,尽管通常这样的API不会向调用方公开任何原始文件接口,因此后者可能不一样(

该怎么办

我的建议是:

a(使用纯OpenXML方法并放弃Office加载项

b(使用纯Office加载项(VSTO(方法并放弃OpenXML代码

考虑到您似乎已经通过OpenXML方法获得了形状和图片的代码,也许选项a(是最好的。

另请参阅

  • 开放式XML SDK
  • Visual Studio Tools for Office(VSTO(

相关内容

  • 没有找到相关文章

最新更新