批量打印利用缓存获取打印页面
为了适应客户的打印需求,添加了批量打印功能。通过后台向directprint1.jsp传递报表,名称及参数。执行多报表的批量打印。由于批量打印涉及到多个报表。所以不能使用润乾的标签在页面产生报表的html。如果客户想要保存打印的报表页面。就需要利用报表的缓存获取。
步骤一,建立要执行批量打印的报表
建立要执行批量打印的多个raq文件。如test1.raq设置参数arg1。
步骤二,定义部署jsp文件,在应用中执行批量打印。
将jsp发布文件directprint1.jsp,piliangdayin.jsp部署到应用项目中
<form name=”form1″ method=”post” >
<input type=”checkbox” name=”checkbox” value=”test1.raq” checked>报表一
<input type=”checkbox” name=”checkbox” value=”test2.raq”>报表二
<br>
<input type=”button” name=”Submit2″ value=”开始打印” onClick=”getCheck()”>
</form>
<script language=”javascript”>
function getCheck(){
var checkBox = document.getElementsByName(‘checkbox’);
var url = “directprint1.jsp?report=”;
for( var i =0;i <checkBox.length ;i++){
if(checkBox[i].checked){
//alert(checkBox[i].value);
url = url + “{“+checkBox[i].value+”(arg1=15)”+”}”;
}
}
//alert(url);
//return url;
openwin(url,’newFream’);
}
</script>
定义控件执行对test1.raq等报表的批量打印
步骤三,定义api缓存设置。
在directprint1.jsp内添加润乾的回调函数。runqian_printOver()。
function runqian_printOver()
{
<%
Context ctx = new Context();
CacheManager manager = CacheManager.getInstance();
manager.setCachePath(“C:\\Temp”);
ctx.setParamValue(“arg1″,arg1);
ReportCache rc = manager.getReportCache(“test1.raq”, ctx, 0); //把报表模板名赋给缓存管理器,系统即自动加载该报表,并建立一系列的缓存管理机制
IReport re= rc.getReport(true); //从缓存中获取报表对象
ExcelReport xml=new ExcelReport();
xml.export( “aa”,re);//第一个参数为sheet名,第二个为报表计算结果。
xml.saveTo(“C:\\b.xls”);
%>
}
通过raq文件名获取报表缓存,并在context里对报表缓存传参。导出excel文件。