从java中,如果在一个实例中给出多个电子表格,则关闭excel电子表格时如何通知

时间:2014-03-09 03:37:54

标签: java excel apache-poi

我有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,并在关闭之后从中读取

1 个答案:

答案 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上不起作用。