api计算数据集记录数
◆ 背景说明
Api运算报表,当报表的数据集中的数据记录数为0的时候,就是没有数据时,就不需要展现报表,以及导出到excel等操作。
这个需求,在报表中也能实现,就是在报表的某个单元格中用数据集函数(=ds1.count)获取,然后对这个单元格的值做判断。但有时,不方便设置这样的单元格,那在api中怎么获取记录数,通过对记录数做判断来执行操作呢,我们看下面一个例子。
◆ 应用举例
1 写一个jsp页面,运算报表。
api运算报表,如下代码:
<%@ page contentType=”text/html;charset=gb2312″ %>
<%@ page import=”java.io.*”%>
<%@ page import=”com.runqian.report4.usermodel.*”%>
<%@ page import=”com.runqian.report4.model.*”%>
<%@ page import=”com.runqian.report4.view.html.*”%>
<%@ page import=”com.runqian.report4.util.*”%>
<%@ page import=”com.runqian.report4.dataset.DataSet”%>
<%
//第一步,读取报表模板
String reportFileHome=Context.getInitCtx().getMainDir();
String reportPath = application.getRealPath(reportFileHome)+”\\area.raq”;
ReportDefine rd = (ReportDefine)ReportUtils.read( reportPath );
//System.out.println(“reportPath==”+reportPath);
//第二步,运算报表
Context context = new Context();
Engine enging = new Engine( rd, context);
IReport iReport = enging.calc();
//第三步,获取数据集记录数
DataSetConfig dsc = iReport.getDataSetMetaData().getDataSetConfig(0);//得到数据集配置
String dsName = dsc.getName();//得到数据集的名称
DataSet dataSet = context.getDataSet(dsName);//得到数据集
int dsCount = dataSet.getRowCount();//得到数据集的记录数
//System.out.println(“dsCount==”+dsCount);
//第四步,通过记录数判断是否展现、输出excel等
if(dsCount>0){
HtmlReport hReport = new HtmlReport( iReport,”report1″ );
out.print(hReport.generateHtml());
ReportUtils.exportToExcel(application.getRealPath(reportFileHome)+”\\area.xls”, iReport, true);
}else out.println(“dsCount==”+dsCount);
%>