参考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视图中。
~$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();
}
}