从Java,如何通知时,Excel电子表格在一个实例关闭给定的多电子表格(From java, ho

2019-10-29 02:18发布

我有一个启动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写在开始前就擅长和关闭后,从它读

Answer 1:

您可以定期打开文件写(只需打开一个正常的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