第1章 将报表导出为图片格式
报表的导出默认情况下是以文件的格式,如Excel、Csv、Rtf、Pdf、Ods,当需要将报表导出为图片格式时,可以通过调用Report-ImageAction来实现。
1.1 Report-ImageAction调用样例代码
导出图片可通过两种方法进行实现。
1.1.1 在报表展现页面点击图片导出按钮进行导出
在报表展现页面ClientShow.jsp中添加图片导出按钮,在展现报表时,可以通过点击按钮将报表以图片格式导出,实现的具体步骤为:
在报表展现页面ClientShow.jsp中,在resultForm内添加“导出image”按钮,调用JS函数resultOutImage,代码如下:
<form id="resultForm" name="resultForm" method="post" action="">
<div id='exportBar' style="width:99%;float:right;margin-bottom: 4px;">
<input type="button" value="导出image" onclick="resultOutImage(resultForm,'true')"/>
…
</form>
运行效果如图1所示
编写JS函数resultOutImage,代码如下
function resultOutImage(resultForm, needProgressBar) {
var act = "Report-ImageAction.do";
resultForm.target = "printIFrame";
resultForm.action = WEB_APP_NAME+'/'+act;
resultForm.submit();
}
变量WEB_APP_NAME是当前目录路径。
执行效果如图2所示
1.1.2 直接输入URL地址进行导出
在知道报表ID并且不需要进行报表展示的情况下,想直接将报表以图片的格式进行导出,可以直接输入URL地址调用Report-ImageAction来实现。
以上图中例子为例,直接输入URL地址:http://10.4.53.105:8080/report/Report-ImageAction.do?reportId=acb1cde1-37a3-473c-8a5b-57a8e12f7efb,显示效果如图3所示
1.1.2.1 缩放比例
图片导出的默认大小为报表原始大小的2倍,可以通过向URL中追加scale参数来设定导出图片的缩放比例。
如要导出3倍大小的“客户信息统计表”, URL地址:http:// 10.4.44.53:8082/report/Report-ImageAction.do?reportId=7e00b950-6b97-41b5-bb97-4ca35d046175 &scale=3。
1.1.2.2 导出格式
图片导出有单张图片和zip包两种形式。Zip包中存放分页导出的多张图片。
可以通过向URL中追加isSinglePage参数来设定导出图片的格式。
- 单张图片:true
- Zip包:false
如要导出zip格式的“客户信息统计表”, URL地址:http:// 10.4.44.53:8082/report/Report-ImageAction.do?reportId=7e00b950-6b97-41b5-bb97-4ca35d046175 &scale=2&isSinglePage=false
1.2 图片导出API使用说明
Report-ImageAction是UniEAP Report中提供的图片导出的应用,用户可以通过使用API更灵活的运用图片导出功能。
以下按照步骤对关键的API进行说明。
1.取得报表引擎
ReportEngine engine = ReportManager.create();
2.创建上下文对象
Map context = new HashMap(3);
3.新建环境对象
Environment env = new ThreadLocalEnvironment();
4.将必要参数保存到上下文对象中
1)环境对象
ReportContextUtil.setContext(context, ReportContext.ENV, env);
2)缓存ID,此参数非必须
ReportContextUtil.setContext(context, ReportContext.CACHEID,cachedId);
5.取得报表
report = engine.getReport(reportId, params, context);
reported :报表ID
params : 报表参数的键值对
context :上下文对象
上下文中放入图片缩放比例参数
ReportContextUtil.setContext(context,ReportContext.IMAGE_EXPORT_SCALE, scale);
scale:图片缩放比例,可以转换为整数的字符串
6.上下文中放入图片导出格式参数
ReportContextUtil.setBooleanContext(context,eportContext.IMAGE_EXPORT_ISSINGLEPAGE, isSinglePage);
isSinglePage:导出图片格式。false表示以zip包形式导出,true表示以单张图片形式导出。
7.导出图片
report.exportToImage(null, context);
List list = (List) context.get("IMAGE_LIST");
list中存放的是java.awt.image.BufferedImage对象。单张图片导出时list.size() = 1;以zip包形式导出时list.size() > 1。