【目的】
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」が以下の様に開けば成功です。
以上です。