我有java程序为他们启动excel电子表格命令行并等待它关闭以执行下一步操作。 (顺便说一下,我的excel运行宏,所以当我的宏完成执行以指示它已完成时我自动关闭电子表格)
p = Runtime.getRuntime().exec("cmd /c start /wait C:\\"+excelSheet);
p.waitFor();
System.out.print("finished "+count + " "+ excelSheet);
但是我希望我的java程序能够启动2个excel电子表格,每次关闭一个工作表时,我都想采取行动。 excel 2010的问题是使用一个Excel实例启动两个电子表格。因此,我的java程序仅检测Excel实例何时关闭,这意味着两个电子表格都必须关闭。
我该如何解决?无论是Java代码,Excel代码,还是其他一些创新方法?请帮忙 谢谢
PS:我在开始之前使用apache poi写入excel,并在关闭之后从中读取
答案 0 :(得分:2)
您可以定期打开文件进行写入(只需在附加模式下打开正常的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,但有Office for Mac,这个技巧在Mac OS上不起作用。