我编写了一个方法,可以成功地将数组中的数据导出到 Excel 文件中。但是,我希望 Java 在 Apache POI 完成编写后自动打开新创建的 Excel 文件。
我的代码如下所示:
public void exportData(Object[][] data, String[] columnNames) {
HSSFWorkbook wb = new HSSFWorkbook();
// Export logic here...
FileOutputStream fileOut = new FileOutputStream(new File(myFilePath));
wb.write(fileOut); // Write the Excel file
fileOut.close(); // Close it
openFile(); // Open it with Excel
}
public void openFile() { // Excel file opening method
try {
Runtime.getRuntime().exec("cmd.exe /c start " + new File(myFilePath));
} catch (Exception e) {
e.printStackTrace();
}
}
它的行为如下:
- 当我在运行时调用 exportData() 时,Excel 文件按原样写入,但不会自动打开。
- 如果我之后再次“手动”调用 openFile()(例如,通过 JButton ActionEvent),它会起作用。
- 如果我在 NetBeans 的调试模式下启动我的应用程序并逐步进行,它就可以工作,而无需事后手动调用 openFile()。
我的猜测是这里的后台正在执行某些操作,并且在我的程序继续运行时需要一些时间;因此,我认为我的 Runtime.exec() 可能会在文件准备好打开之前发生。
你认为是这样吗?有更好的方法吗?如果没有,我该如何相应地延迟 Runtime.exec() ?