搜索文章

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 报表技术分享 > 纵向同值单元格的合并

纵向同值单元格的合并

纵向同值单元格的合并

客户要求:对报表展现格式进行合并如:在报表展现后,要求把相邻值相同的单元格进行合并,这样看数据会更加直观一些,快逸报表支持合并单元格,但只是在报表复杂报表设计" target="_blank" class="quieeLink1">设计时在设计器中进行合并,或者说通过快逸的group函数来实现,但有些单元格要在计算后才能知道,

第一步:建立报表,如图一:

图一

第二步:Api合并单元格

报表展现时要求将最后一列值相同的单元格进行动态合并,下面介绍下该需求的实现方法。

快逸的iReport对象为报表计算后的结果对象,通过对该对象的灵活使用能很好实现该需求:

<%@ page contentType=”text/html;charset=GBK” %>

<%@ taglib uri=”/WEB-INF/quieeReport4.tld” prefix=”report” %>

<%@ page import=”com.quiee.report4.usermodel.*”%>

<%@ page import=”com.quiee.report4.view.*” %>

<%@ page import=”com.quiee.report4.model.*” %>

<%@ page import=”com.quiee.report4.model.engine.*” %>

<%@ page import=”com.quiee.report4.util.ReportUtils” %>

<%@ page import=”com.quiee.report4.view.xml.XMLReport,com.quiee.report4.cache.*,com.quiee.report4.usermodel.*”%>

<%@ page import=”java.util.*”%>

<%@ page import=”java.sql.*”%>

<%@ page import=”java.io.*”%>

<%

request.setCharacterEncoding( “GBK” );

//1、读取报表模板

InputStream is = application.getResourceAsStream(“/reportFiles/group.raq”);

ReportDefine rd = (ReportDefine)ReportUtils.read(is);

Context context = new Context();

Engine e = new Engine( rd, context );

IReport report = e.calc();

int startRow,endRow,startCol,endCol;

int i,j,k;

startRow=1;

endRow=1;

startCol=1;

endCol=1;

int rownum=report.getRowCount();

int colnum=report.getColCount();

for(i=1;i<rownum-1;i++){

for(j=1;j<colnum;j++){

Object s1=report.getCell(i,(short)j).getValue();

Object s2=report.getCell(i+1,(short)j).getValue();

if(s1!=null && s1==s2){

startRow=i;

endRow=i+1;

startCol=j;

endCol=j;

// continue;

for(k=i+2;k<rownum;k++){

System.out.println(“————–”);

Object s3=report.getCell(k,(short)j).getValue();

// System.out.println(“s3==========”+s3.toString()+”kkkk=”+(k));

if(s1==s3){

endRow=k;

}

else{

k–;

System.out.println(“k “+(k));

break;

// continue;

}

}

Area area=new Area(startRow,(short)startCol,endRow,(short)endCol);

if(!report.getCell(startRow,(short)startCol).isMerged()){

System.out.println(“startRow=”+(startRow)+”endRow=”+(endRow)+”startCol=”+(startCol)+”endCol=”+(endCol));

ReportUtils.mergeReport(report,area);

}

System.out.println(“合并完成“);

}

}

}

String rptName = “RPT_”+Double.toString(Math.random());

//3、计算报表

request.setAttribute(rptName,report);

%>

<report:html name=”report1″ beanName=”<%=rptName%>” srcType=”defineBean”

needPrint=”yes”

needSaveAsExcel=”yes”

/>

第三步:利用jsp发布报表

本文标签: