Apache POIでExcelファイルを読み込むと、Excelファイルが更新されてしまいます。なぜでしょうか?
環境
- Apache POI 3.17
- JDK 1.8.0_162
- Excel 2016
やりたいこと
Apache POIで、Excelファイルを読み込む機能があります。
以下のようなコードです。
public static void read(File file) throws IOException, InvalidFormatException {
Workbook workbook = WorkbookFactory.create(file);
Sheet sheet = workbook.getSheetAt(0);
//セルの中身を読み取る処理
workbook.close();
}
今、このメソッドのテストコードを作成したいです。
テストデータ用のExcelファイルも、リポジトリに登録します。
問題
上記のメソッドでExcelファイルを読み込むと、Excelファイルが更新され、リポジトリに登録してあるExcelファイルと差分が出てしまいます。
詳細事項
差分の内容
空のExcelファイル(新規作成時のファイル)を使って、cmp
コマンドでバイナリ差分を確認しました。
$ cmp -b sample-after.xlsx sample4-before.xlsx
sample-after.xlsx sample4-before.xlsx differ: byte 7, line 1 is 12 ^J 6 ^F
- sample-before.xlsx : テストコード実行前のExcelファイル
- sample-after.xlsx : テストコード実行後のExcelファイル
close
メソッド
close
メソッドの呼び出さなければ、Excelファイルは更新されませんでした。
質問
- 上記のコードで、なぜExcelファイルが更新されるのでしょうか?
- Excelファイルのどういった情報が、更新されているのでしょうか?
- Excelファイルが更新されないように、読み込む方法はありますか?あれば、その方法を教えていただきたいです。(
close
メソッドを呼ばないは除外)