jsp中获得报表某一列的数据

有一些客户需要在报表展现的同时获取到报表某一列的内容,然后需要在其他的地方对着一列的数据进行处理,这样就需要在jsp中计算完报表后获取到报表相应列里面的内容,然后用bean的方式发布报表。

第一步:制作一张报表,连接demo数据源。

制作一张的报表,连接demo数据源,报表的具体样式如下图所示:

数据集ds1sql为:SELECT EMPLOYEE.EMPID,EMPLOYEE.EMPNAME,EMPLOYEE.BIRTHDAY,EMPLOYEE.SEX,EMPLOYEE.DEGREE,EMPLOYEE.BONUS FROM EMPLOYEE

数据集ds2sql为:SELECT DEGREE.ID,DEGREE.NAME FROM DEGREE

设置报表E2单元格的显示格式为:ds2.select1(name,id==value())

设置报表D2单元格的显示格式为:map(list(“1″,”2″),list(““,”“))

第二步:编写jsp,获取报表列的内容。

写一个jsp,在jsp中获取到需要展现的报表,在jsp中使用API计算报表得到IReport对象,然后遍历IReport对象的指定列,然后保存这个列的内容,这样就实现了或者指定列内容的需求。

具体jsp中完整的代码如下:

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

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

<%@ page import=” com.runqian.report4.model.ReportDefine,

com.runqian.report4.model.engine.ExtCellSet,

com.runqian.report4.usermodel.Context,

com.runqian.report4.usermodel.Engine,

com.runqian.report4.usermodel.INormalCell,

com.runqian.report4.usermodel.IReport,

com.runqian.report4.util.ReportUtils”%>

<% //这里为两种方法准备图片连接的公共部分

String raq = “colname.raq”;

String path = application.getRealPath(“/reportFiles/”+raq);

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

Context ctx = new Context();

Engine engine = new Engine(rd,ctx);

IReport ireport = engine.calc();

StringBuffer sb = new StringBuffer();

int colnum = 3;

for(int i =1;i<=ireport.getRowCount();i++){

INormalCell inc = ireport.getCell(i, (short)colnum);

sb.append(inc.getValue().toString()+”;”);

}

out.println(“报表第“+colnum+”列的值为(真实值)“+sb);

request.setAttribute(“report”,ireport);

%>

<table align=center>

<tr><td>

<report:html

name=”report1″

srcType=”defineBean”

beanName=”report”

needSaveAsWord=”yes”

needSaveAsPdf=”yes”

needSaveAsExcel=”yes”

submit=”<%=submitImage%>”

height=”-1″

/>

</td></tr>

</table>

第三步:使用jsp发布制作好的报表,查看效果。

使用上面jsp发布制作好的报表,在浏览器中查看效果,具体的效果如下:

这样经过上面几步的设置,获取报表中指定列内容的需求就实现了。

热门文章