ExCella Reports1.4のライブラリを使用し帳票・ExcelのファイルでReportProcessListenerを使用し3行おきに罫線を太くします。
【手順】
1.「Javaプロジェクトの作成方法」の手順で、「ExCellaSample036-ReportProcessListener3LineBoldBorder」といプロジェクトを作成。
2.「excella-reports-1.4.jarとそれに依存ライブラリを設定する方法」の手順で、プロジェクトにExCella Reports1.4とそれに依存するライブラリを追加。
3.「ReportProcessListener3LineBoldBorderTemplate.xls」という名前の、以下の様なテンプレートファイルを作成し、「ExCellaSample036-ReportProcessListener3LineBoldBorder」直下に配置。
4.「Javaクラスファイルの作成方法」の手順で、「Main」というクラスを作成。
5.「Main.java」を以下の様に入力。
import java.util.ArrayList; import java.util.List; import org.bbreak.excella.reports.exporter.ExcelExporter; import org.bbreak.excella.reports.model.ParamInfo; import org.bbreak.excella.reports.model.ReportBook; import org.bbreak.excella.reports.model.ReportSheet; import org.bbreak.excella.reports.processor.ReportProcessor; import org.bbreak.excella.reports.tag.BlockRowRepeatParamParser; import org.bbreak.excella.reports.tag.SingleParamParser; public class Main { public static void main(String[] args) throws Exception { String templateFilePath = "ReportProcessListener3LineBoldBorderTemplate.xls"; String outputFileName = "ReportProcessListener3LineBoldBorder"; String outputFileDir = ""; String outputFilePath = outputFileDir.concat(outputFileName); ReportBook outputBook = new ReportBook(templateFilePath, outputFilePath, ExcelExporter.FORMAT_TYPE); ReportSheet outputSheet = new ReportSheet("TemplateSheet", "Sheet1"); outputBook.addReportSheet(outputSheet); List<ParamInfo> personList = new ArrayList<ParamInfo>(); personList.add(createNameData("あいうえお", "男", "21")); personList.add(createNameData("かきくけこ", "女", "28")); personList.add(createNameData("さしすせそ", "男", "32")); personList.add(createNameData("たちつてと", "女", "19")); personList.add(createNameData("なにぬねの", "男", "32")); outputSheet.addParam(BlockRowRepeatParamParser.DEFAULT_TAG, "参加者", personList.toArray()); ReportProcessor reportProcessor = new ReportProcessor(); reportProcessor.addReportProcessListener(new ReportProcessListener3LineBold(5, 3)); reportProcessor.process(outputBook); } private static ParamInfo createNameData(String name, String gendar, String age) { ParamInfo nameData = new ParamInfo(); nameData.addParam(SingleParamParser.DEFAULT_TAG, "名前", name); nameData.addParam(SingleParamParser.DEFAULT_TAG, "性別", gendar); nameData.addParam(SingleParamParser.DEFAULT_TAG, "年齢", age); return nameData; } }6.「Ctrl+Shift+O」を押し、パッケージのインポート文を補完。
7.「Ctrl+Shift+F」を押し、ソースコードをフォーマッティング。
8.「Javaクラスファイルの作成方法」の手順で、「ReportProcessListener3LineBold」というクラスを作成。
9.「ReportProcessListener3LineBold.java」を以下の様に入力。
import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.bbreak.excella.core.SheetData; import org.bbreak.excella.core.SheetParser; import org.bbreak.excella.core.exception.ParseException; import org.bbreak.excella.reports.listener.ReportProcessListener; import org.bbreak.excella.reports.model.ReportBook; public class ReportProcessListener3LineBold implements ReportProcessListener { private static final int BODY_START_ROW_NO = 1; private static final int BODY_START_COL_NO = 1; private int rowCount; private int colCount; public ReportProcessListener3LineBold(int rowCount, int colCount) { this.rowCount = rowCount; this.colCount = colCount; } @Override public void postParse(Sheet sheet, SheetParser sheetParser, SheetData sheetData) throws ParseException { //HSSFSheet hssfSheet = (HSSFSheet) sheet; List<CellStyle> cellStyleCoplyColumnList = getCellStyleCoplyColumnList(sheet); for (int i = 0; i < rowCount; i++) { if (i % 3 == 2 || i == rowCount - 1) { for (int j = 0; j < cellStyleCoplyColumnList.size(); j++) { sheet.getRow(BODY_START_ROW_NO + i).getCell(BODY_START_COL_NO + j).setCellStyle(cellStyleCoplyColumnList.get(j)); } } } } private List<CellStyle> getCellStyleCoplyColumnList(Sheet sheet) { List<CellStyle> cellStyleCoplyColumnList = new ArrayList<CellStyle>(); CellStyle cellStyle; CellStyle cellStyleCoplyColumn; for (int i = 0; i < colCount; i++) { cellStyle = sheet.getRow(BODY_START_ROW_NO).getCell(BODY_START_COL_NO + i).getCellStyle(); cellStyleCoplyColumn = sheet.getWorkbook().createCellStyle(); cellStyleCoplyColumn.cloneStyleFrom(cellStyle); cellStyleCoplyColumn.setBorderBottom(HSSFCellStyle.BORDER_THICK); cellStyleCoplyColumnList.add(cellStyleCoplyColumn); } return cellStyleCoplyColumnList; } @Override public void preParse(Sheet sheet, SheetParser sheetParser) throws ParseException { } @Override public void postBookParse(Workbook arg0, ReportBook arg1) { } @Override public void preBookParse(Workbook arg0, ReportBook arg1) { } }10.「Ctrl+Shift+O」を押し、パッケージのインポート文を補完。
11.「Ctrl+Shift+F」を押し、ソースコードをフォーマッティング。
12.「Javaプロジェクトの実行方法」の手順で、「Main.java」を実行。
13.コンソールにエラーが出力されていないか確認。
(※コンソールが表示されていない場合は、「コンソール・ビューの表示方法」を確認)
14.「リフレッシュ(ローカルファイルとの同期)の方法」の手順で、プロジェクトをリフレッシュ。
15.「ExCellaSample036-ReportProcessListener3LineBoldBorder/ReportProcessListener3LineBoldBorder.xls」が作成されています。
16.「ExCellaSample036-ReportProcessListener3LineBoldBorder/ReportProcessListener3LineBoldBorder.xls」をダブルクリック。
17.「ReportProcessListener3LineBoldBorder.xls」が以下の様に開けば成功です。
以上です。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。