列幅の調整は大事!
Apache POIを使って、Excelでセルサイズを自動調整するサンプル
Apache POIを使ってExcelファイルを作成します。
また、都道府県のデータをセルにセットしている2列に対して、列の幅を自動調整します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelAutoSizeColumnTest { public static void main(String[] args) { //データ準備 List<Pref> prefList = new ArrayList<Pref>(); prefList.add(new Pref("01","北海道")); prefList.add(new Pref("02","青森県")); prefList.add(new Pref("03","岩手県")); prefList.add(new Pref("04","宮城県")); prefList.add(new Pref("05","秋田県")); //ワークブック作成 try(Workbook workbook = new XSSFWorkbook(); FileOutputStream outputStream = new FileOutputStream("c:\\work\\test.xlsx")) { //シート作成 Sheet sheet = workbook.createSheet("しーと1"); //フォント作成 CellStyle style = workbook.createCellStyle(); Font font = workbook.createFont(); font.setFontName("MS Pゴシック"); style.setFont(font); for (int i=0 ; i<prefList.size() ; i++) { Pref pref = prefList.get(i); Row row = sheet.createRow(i); //データのセットとフォントのセット Cell cell = row.createCell(0); cell.setCellValue(pref.code); cell.setCellStyle(style); cell = row.createCell(1); cell.setCellValue(pref.name); cell.setCellStyle(style); } //列の幅を自動調整 sheet.autoSizeColumn(0); sheet.autoSizeColumn(1); //ファイル出力 workbook.write(outputStream); } catch (IOException e) { e.printStackTrace(); } } } class Pref{ public String code = null; public String name = null; public Pref(String code, String name) { this.code = code; this.name = name; } } |
実行結果
Excelファイルが作成されます。
また、都道府県のデータがセットされたセル2列に対して、列の幅が自動調整されます。
サンプルの解説
Sheet#autoSizeColumn(int)で、列の幅を自動調整できます。
ただし、セルに全角文字が含まれる場合、あらかじめフォントを設定が必要です。
フォントが設定されていないと、正しく自動調整されません。
※このコードを使用するには、別途Apache POIの入手が必要です。
入手方法などはこちらの記事に書いてあります。