jsp中获得报表某一列的数据
有一些客户需要在报表展现的同时获取到报表某一列的内容,然后需要在其他的地方对着一列的数据进行处理,这样就需要在jsp中计算完报表后获取到报表相应列里面的内容,然后用bean的方式发布报表。
第一步:制作一张报表,连接demo数据源。
制作一张的报表,连接demo数据源,报表的具体样式如下图所示:
数据集ds1的sql为:SELECT EMPLOYEE.EMPID,EMPLOYEE.EMPNAME,EMPLOYEE.BIRTHDAY,EMPLOYEE.SEX,EMPLOYEE.DEGREE,EMPLOYEE.BONUS FROM EMPLOYEE
数据集ds2的sql为: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发布制作好的报表,在浏览器中查看效果,具体的效果如下:
这样经过上面几步的设置,获取报表中指定列内容的需求就实现了。