Apache POIを使って、Excelの印刷範囲を設定するサンプル
Apache POIを使ってExcelファイルを作成します。
また、都道府県のデータをセルにセットしている5行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 | import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; 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 ExcelPrintAreaTest { 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"); //印刷領域の範囲内にデータ書き込み for (int i=0 ; i<prefList.size() ; i++) { Pref pref = prefList.get(i); Row row = sheet.createRow(i); row.createCell(0).setCellValue(Integer.parseInt(pref.code)); row.createCell(1).setCellValue(pref.name); } //印刷領域の範囲外にデータ書き込み Row row = sheet.getRow(0); row.createCell(3).setCellValue("印刷範囲外のセル"); //印刷領域を設定 workbook.setPrintArea(0, "A1:B5"); //ファイル出力 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ファイルに印刷領域が設定されます。
サンプルの解説
Workbook#setPrintArea(int, String)で印刷領域を設定できます。
第1引数は、シートのインデックス。このサンプルではシートは1つしかないので、0。
第2引数は、印刷したい範囲のセルを指定します。
※このコードを使用するには、別途Apache POIの入手が必要です。
入手方法などはこちらの記事に書いてあります。