从java,如何在Excel电子表格closures的情况下给出一个实例中的多个电子表格

我有一个Java程序,为他们的命令行启动Excel电子表格,并等待它closures采取下一步行动如下。 (顺便说一句,我的Excel运行macros,所以我closures电子表格时,我的macros完成执行,以表明它已经完成)

p = Runtime.getRuntime().exec("cmd /c start /wait C:\\"+excelSheet); p.waitFor(); System.out.print("finished "+count + " "+ excelSheet); 

不过,我想我的Java程序启动2 Excel表格,每次closures一张表,我想采取行动。 Excel 2010使用Excel的一个实例启动电子表格的问题。 因此,我的Java程序只检测到Excel的实例closures,这意味着两个电子表格都必须closures。

我该如何解决? 无论是Java代码,Excel代码,还是其他一些创新方法? 请帮忙谢谢

PS:我在开始之前使用apache poi写入excel,并在closures之后从中读取

您可以定期打开文件进行写入(只需在append模式下打开一个正常的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上是行不通的。