概要
Apache POIを使用して、エクセル帳票を出力する処理の実装を行っている際に、
印刷時の拡大縮小の設定を処理内で行ったが、上手く設定されない事象が発生した。
上手くいかなかった際の処理
FailedExample.java
workbook.cloneSheet(0, "TestSheet");
sheet = workbook.getSheetAt(1);
// 印刷時タイトル設定
sheet.setRepeatingRows(new CellRangeAddress(0, 2, -1, -1));
sheet.setRepeatingColumns(new CellRangeAddress(-1, -1, 0, 9));
// 印刷時の拡大縮小の設定
PrintSetup ps = sheet.getPrintSetup();
ps.setScale((short)40);
上記のように先に印刷時のタイトルの設定を行ってから、拡大縮小の設定を行っていた。
そうすると、なぜか出力されるエクセルに拡大縮小の設定が反映されなかった。
上手くいった際の処理
FailedExample.java
workbook.cloneSheet(0, "TestSheet");
sheet = workbook.getSheetAt(1);
// 印刷時の拡大縮小の設定
PrintSetup ps = sheet.getPrintSetup();
ps.setScale((short)40);
// 印刷時タイトル設定
sheet.setRepeatingRows(new CellRangeAddress(0, 2, -1, -1));
sheet.setRepeatingColumns(new CellRangeAddress(-1, -1, 0, 9));
先に拡大縮小の設定を行い、後にタイトルの設定を行うよう、先ほどと処理の順番を入れ替えると、
拡大縮小の設定が反映されていた。