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

时间:2016-11-10 09:44:06

标签: java java-8 apache-poi powerpoint powerpoint-2013

参考POI - Cannot write to file while it is opened in Excel?

正在开发的Java应用程序的必需功能是上述的PowerPoint版本:使用Java,创建幻灯片并添加从捕获的应用程序数据生成的内容,然后将幻灯片添加到现有PowerPoint当前在Microsoft 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: the process cannot access the file because it is being used by another process.

该应用程序使用Java 1.8实现,在Windows 10上运行,并使用Microsoft Office 2013.此特定功能的开发刚刚从头开始,因此仍在寻求和探索解决方案。

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

如何实现所需的功能?我需要哪些技术或库来完成工作?

示例代码取自TutorialsPoint的Apache POI 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();    
  }
} 

0 个答案:

没有答案