因为在导出excel表格的时候,存在一条记录占用多行,并且一次导出若干条记录。为了用户打印方便,所以要针对性对这些记录进行分页设置。以下示例,模板设计时一条记录占用7行,实测6条记录占用一页,故代码中分页以此为依据进行了分页。
模板
分页代码:
List supplyAreaList = saBiz.getSupplyAreaById(supplyAreaId);
SupplyArea sa = (SupplyArea) supplyAreaList.get(0);
Long id = sa.getSupplyAreaId();
List qcList = new ArrayList();
QueryCondition idObj = new QueryCondition();
idObj.setFieldName("supplyAreaId");
idObj.setQueryOperator(QueryOperator.le);
idObj.setValue(id);
qcList.add(idObj);
List recordsList = saBiz.getRecords(qcList, new SupplyArea());
String templateDir = "D:/excel/template/SupplyAreaChangeRow.xls";
String targetDir="D:/excel/export/testChangeRow.xls";
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(templateDir));//传入模板文件
//InputStream bis = new BufferedInputStream(new FileInputStream(templateDir));//传入模板文件
Map beans = new HashMap();
beans.put("suplyArea", recordsList);
XLSTransformer transFormer = new XLSTransformer();
HSSFWorkbook workBook = transFormer.transformXLS(bis,beans);
OutputStream os = new FileOutputStream(targetDir);
HSSFSheet sheet = workBook.getSheetAt(0);
for(int i=1;i<recordsList.size()/7+2;i++ ){
//sheet.setAutobreaks(true);//经测试证明所有记录为一页,即不分页
sheet.setRowBreak(i*6*7-1);//每页显示6条记录,每条记录占7行,共j页
sheet.setColumnBreak((short)5);
}
workBook.write(os);
os.flush();
os.close();
导出结果
打印预览