Apache POIでExcelファイルを扱う時のベストプラクティス(自分流)
Apache POI
でExcelファイルを扱う時のベストプラクティス(自分流)
既存のファイルを読み込む場合
既存のファイルを読み込む場合はWorkbookFactory#create
メソッドを利用すれば、xls
とxlsx
形式を自動判定してワークブックを開くことができる。
File file = new File("example.xlsx");
try (Workbook workbook = WorkbookFactory.create(file)) {
// TODO
}
WorkbookFactory#create
メソッドを引数1つで呼び出した場合、tryブロックの終了時にファイルの内容が自動的に保存されてしまう。ファイルを読み込み専用で開くためには、第3引数にtrue
を設定すれば良い。
File file = new File("example.xlsx");
try (Workbook workbook = WorkbookFactory.create(file, null, true)) {
// TODO
}
参考(https://ja.stackoverflow.com/q/44897)
新規ファイルを作成する場合
新規ファイルを作成する場合は(基本的に)一度書き込んだ行やセルを再度操作することは考えづらいため、SXSSFWorkbook
を使用するのが望ましい。
File file = new File("example.xlsx");
try (Workbook workbook = new SXSSFWorkbook()) {
// TODO
// ファイル出力
try (FileOutputStream fileOutputStream = new FileOutputStream(file)) {
workbook.write(fileOutputStream);
}
}