Apache POIでExcelファイルを扱う時のベストプラクティス(自分流)

Apache POIでExcelファイルを扱う時のベストプラクティス(自分流)

既存のファイルを読み込む場合

既存のファイルを読み込む場合はWorkbookFactory#createメソッドを利用すれば、xlsxlsx形式を自動判定してワークブックを開くことができる。

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);
    }
}