一种带有自动换行的报表补足空行的实现方法
需求描述
报表单元格设置有自动换行,报表又需要补足空行。
需求实现
第一步,设计报表扩展出满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);
第三步,查看效果如下,