在Microsoft PowerPoint中打开PPTX文件时,如何通过Java编辑该文件?

在Microsoft PowerPoint中打开PPTX文件时,如何通过Java编辑该文件?,java,java-8,apache-poi,powerpoint,powerpoint-2013,Java,Java 8,Apache Poi,Powerpoint,Powerpoint 2013,关于 正在开发的Java应用程序所需的功能是上面的PowerPoint版本:使用Java创建幻灯片并添加从捕获的应用程序数据生成的内容,然后将幻灯片添加到当前在Microsoft PowerPoint中打开的现有PowerPoint文件中 如果没有打开PowerPoint文件,Java应用程序将首先在必要时打开Microsoft PowerPoint,然后创建一个新的空PowerPoint文件,然后在Microsoft PowerPoint中打开它 例如,我的应用程序将创建Test.pptx。然

关于

正在开发的Java应用程序所需的功能是上面的PowerPoint版本:使用Java创建幻灯片并添加从捕获的应用程序数据生成的内容,然后将幻灯片添加到当前在Microsoft PowerPoint中打开的现有PowerPoint文件中

如果没有打开PowerPoint文件,Java应用程序将首先在必要时打开Microsoft PowerPoint,然后创建一个新的空PowerPoint文件,然后在Microsoft PowerPoint中打开它

例如,我的应用程序将创建
Test.pptx
。然后,应用程序将在Microsoft PowerPoint应用程序中打开它。接下来,我添加幻灯片。操作成功,不会引发任何异常。但是,这些更改不会反映在Microsoft PowerPoint视图中

  • 如果在Microsoft PowerPoint中关闭文件并再次打开,则可以看到更新的更改。然而,这不是我想要的用户必须能够连续添加新幻灯片,并看到这些幻灯片动态更新到Microsoft PowerPoint视图中,而无需在每次添加幻灯片后重新启动Microsoft PowerPoint应用程序。
  • 我注意到,在Microsoft PowerPoint中打开PowerPoint文件时,会在我的桌面上创建一个
    ~$Test.pptx
    临时文件。我试图让Java应用程序将生成的幻灯片直接添加到
    ~Test.pptx
    中,但
    FileNotFoundException:该进程无法访问该文件,因为它正被另一个进程使用。
    随后被抛出
该应用程序使用Java 1.8实现,在Windows 10上运行,并使用Microsoft Office 2013。这一特殊功能的开发刚刚开始,因此仍在寻求和探索解决方案

目前,我们正在使用ApachePOI,但如果这意味着要解决问题,我们可以不使用它。有人提议尝试使用Microsoft Office宏。这个想法仍在探索中,因为我们不知道如何充分使用宏来确定它是否充分满足我们的要求

如何实现所需的功能?我需要什么技术或库来完成这项工作

示例代码取自TutorialsPoint的ApachePOI PPT教程。现有的PowerPoint文件应该已经在Microsoft PowerPoint中打开,当运行以下代码时,我需要立即在Microsoft PowerPoint视图中查看添加的幻灯片。提醒:使用Apache POI不是强制性的。

public class EditPresentation {
  public static void main(String ar[]) throws IOException{
    //opening an existing slide show
    File file = new File("example1.pptx");
    FileInputStream inputstream=new FileInputStream(file);
    XMLSlideShow ppt = new XMLSlideShow(inputstream);

    //adding slides to the slodeshow
    XSLFSlide slide1 = ppt.createSlide();
    XSLFSlide slide2 = ppt.createSlide();

    //saving the changes 
    FileOutputStream out = new FileOutputStream(file);
    ppt.write(out);

    System.out.println("Presentation edited successfully");
    out.close();    
  }
} 

java是强制性的吗。。。我会尝试打开/显示/更改Powerpoint ActveX对象,例如在C#上。因此,正如链接的答案所说,POI不起作用。不幸的是,它必须是Java。这不可能通过Apache POI实现,因为Microsoft Powerpoint会锁定文件,并且不允许其他进程对其进行更改。@thegreatjedi您找到解决此问题的方法了吗?我也有同样的问题