知识库

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 报表技术分享 > 快逸报表使用计算监听类保存rat文件

快逸报表使用计算监听类保存rat文件

需求背景
有客户希望实现这样一个需求:在参数模板中输入相应参数(如3月份),查询展现出该条件下的数据(3月份的数据),当以后每次使用该条件(3月份)查询时均显示第一次查询出的结果,无论数据库中(3月份)的数据如何变化。
问题分析
客户的这个需求可以简单理解为,保存第一次查询后的结果,以后相同条件下都使用这个结果。
目前润乾提供了rat的文件格式,即报表计算后的文件格式。现在要做的就是把第一次计算后的结果以rat文件格式输出。
计算监听类可以为我们提供很好的帮助,继承AbstractCalculateListener类,在afterCalculate()方法中取得的report对象即为计算后的报表,我们再将其保存成rat文件即可。

实现步骤
制作任意带有参数模板的报表。
计算监听类如下:

import java.io.File;

import com.runqian.report4.usermodel.AbstractCalculateListener;

import com.runqian.report4.util.ReportUtils;

public class SaveRatCaclListener extends AbstractCalculateListener{

public void afterCalculate() throws Exception {

String realPath = request.getRealPath(“”).replace(“\\”,”/”); //获取应用真实路径

String reportFileHome = context.getInitCtx().getMainDir(); //获取应用资源路径

String reportName = (String)request.getAttribute(“reportName”); //jsp中设置要保存rat文件名,与报表同名

String ratName = realPath+reportFileHome+File.separator+reportName+”.rat”;

ReportUtils.write(ratName, report);

System.out.println(“rat保存成功!输入路径为—->”+ratName);

}

}

发布报表的jsp代码片段:

1、 设置要保存的rat文件名为报表名,存到request中,以便在计算监听类中获取

request.setAttribute(“reportName”,report.substring(0,report.lastIndexOf(“.raq”)));

2、 检查是否有相应(与raq文件同名)的rat文件

String ratFile = report.substring(0,iTmp)+”.rat”;

File ratf=new File(application.getRealPath(reportFileHome+ File.separator +ratFile));

if(ratf.exists()){

System.out.println(“存在与该报表对应的rat文件>>>>>>>>>”+ratFile);

3、 如果有相应的rat文件,则发布rat文件

本文标签: