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发布制作好的报表,在浏览器中查看效果,具体的效果如下:
这样经过上面几步的设置,获取报表中指定列内容的需求就实现了。