読者です 読者をやめる 読者になる 読者になる

Apache POIのExcelファイルで日本語セルの列幅を自動調整

Java

Apache POIで列幅を自動で調整してくれる
Sheet#autoSizeColumnメソッドがあります。

数字や英語の場合、ちゃんと列幅を調整してくれるようですが
日本語の場合、Sheet#autoSizeColumnメソッドを呼び出しても、
幅がうまく調整されません。
幅が微妙に足りなかったりします。

こういう場合、セルにフォントを明示的に指定すると、
列幅が問題なく調整されます。

// ...中略...
// 日本語での列幅の自動調整のため、フォントを明示的に指定する。
CellStyle cellStyle = workbook.createCellStyle();
Font font = workbook.createFont();
font.setFontName("Serif");
cellStyle.setFont(font);

// ... 中略 ...
// 列幅を自動調整する。ここでは最初(0番目)の列の幅を自動調整する。
sheet.autoSizeColumn(0, true);