配列から Excel ファイルにデータを正常にエクスポートするメソッドを作成しました。ただし、Apache POI が書き込みを完了したときに、新しく作成された Excel ファイルを Java が自動的に開くようにしたいと考えています。
私のコードは次のようになります。
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() を遅らせるにはどうすればよいですか?