我有一个启动Excel电子表格,为他们的命令行并等待它被关闭,如下进行下一步动作java程序。 (顺便说一句我的Excel运行的宏,所以我会自动关闭该电子表格时,我在执行宏观完成以表明它是完成)
p = Runtime.getRuntime().exec("cmd /c start /wait C:\\"+excelSheet);
p.waitFor();
System.out.print("finished "+count + " "+ excelSheet);
不过,我希望我的java程序启动2个Excel电子表格,每次一个片关闭,我要采取行动。 使用Excel的一个实例是Excel 2010和中启动两个电子表格的问题。 因此,当将Excel的实例被关闭,这意味着两个电子表格必须关闭我的Java程序只检测。
我该如何解决呢? 无论是Java代码,Excel中的代码,其他一些创新的方法? 请帮忙,谢谢
PS:我使用的Apache POI写在开始前就擅长和关闭后,从它读
您可以定期打开文件写(只需打开一个正常的FileOutputStream
追加模式就可以了-如果这引起了IOException,则该文件仍处于打开状态)
public boolean isStillOpenOnWindows(File file) {
try {
FileOutputStream out = new FileOutputStream(file, true);
out.close();
// Not open anymore
return false;
} catch (IOException e) {
// Still open
return true;
}
}
正如方法的名称所暗示的,这不是跨平台的,它仅适用于Windows,因为Windows不允许过程有开放的同时写入文件。
既然你在谈论Excel中,很可能是你的意思是Windows,但有Mac版Office这一招不会在Mac OS上运行。
文章来源: From java, how to be notified when excel spreadsheet is closed given multi spreadsheets in one instance