一种带有自动换行的报表补足空行的实现方法

一种带有自动换行的报表补足空行的实现方法

需求描述

报填报表单元格设置有自动换行,报表又需要补足空行。

需求实现

第一步,设计报表扩展出满1页的空行,

第二步,查看计算完的报表最后一页又多少行,然后计算出补足空行应该需要的行数,修改单元格表达式,利用defineBean的方式发布报表,关键代码如下:

Context context = new Context();//构建报表环境

String pkValue=request.getParameter(“pkValue”);//url传过来的参数

System.out.println(pkValue+”===================”);

context.setParamValue(“pkValue”, pkValue);//把参数设置到运算报表的context

Engine enging = new Engine( rd, context);

IReport iReport = enging.calc();//计算报表,生成结果文件

PrintSetup ps = iReport.getPrintSetup(); //取打印配置

iReport.setPrintSetup(ps); //设置打印配置*/

PageBuilder pb = new PageBuilder(iReport); //根据iReport中的PrintSetup里的信息进行分页

IReport iReport1 = pb.getPage(pb.getPageCount());//取第一次计算后,最后一页的iReport对象

int zz1 = iReport1.getRowCount();//看看最后一页有多少行

int zz2 = 0;//报表里的A8补的是20行,算算应该添加多少行

if(zz1==30) {zz2=20;}else{zz2=19-(zz1-10);}

System.out.println(“aaaaaaaaaa”+zz1+”bbbbbbbbbbb”+zz2);

INormalCell inc=rd.getCell(8,(short)1);//A8单元格

IByteMap map1=new ByteMap();

if(zz2==20){map1.put(INormalCell.VALUE,”to(20,”+zz2+”)”);}else{

map1.put(INormalCell.VALUE,”to(0,”+zz2+”)”);}

inc.setExpMap(map1);

String m = “reportDefine”+UUID.randomUUID().toString();

request.setAttribute(m,rd);

第三步,查看效果如下,