-
Notifications
You must be signed in to change notification settings - Fork 8
06.panda export
Bing edited this page Jul 27, 2018
·
1 revision
导出模块主要提供了对Dorado7中Datagrid和Autoform两种类型的控件报表导出功能,以Datagrid或者Autoform为显示模板,导出其数据为PDF或者Excel格式,支持Datagrid控件中filterBar数据过滤导出、列头组合自定义、数据自定义导出等功能。同时可以利用Panda中提供的panda-swfviewer模块,在线浏览产生的报表文件,供用户在线浏览和打印使用。
由于panda-export模块采用Dorado7组件方式实现导出、预览功能,那么在创建配置完成项目后,需要启动项目工程更新Dorado7配置规则,更新完Dorado7配置规则后,打开Dorado View文件,可以看到在Dorado7工具栏新添加了一个组件Export2ReportAction。
- 属性名 类型 默认值 描述
- template String 空 导出数据模板DataGrid或者AutoForm的控件id,如果有多个值那么逗号分隔,例如 autoForm1,dataGrid1
- interceptorName String 空 服务端数据拦截器名称
- rowSpace int 1 报表间距,template属性指定多个控件id时有效
- autoDownload boolean true 是否自动下载
- showTitle boolean false 是否显示标题
- titleName String 空 标题的名称
- titleBgColor String #FFFFFF 标题背景色
- titleFontColor String #000000 标题颜色
- titleFontSize int 18 标题字体大小
- showPageNumber boolean true 是否显示页号,导出pdf格式时有效
- headerBgColor String #D8D8D8 表头背景色
- headerFontColor String #000000 表头颜色
- headerFontSize int 10 表头字体大小
- dataBgColor String #FFFFFF 数据背景色
- dataFontColor String #000000 数据颜色
- dataFontSize int 10 数据字体大小
- dataScope String currentPage 数据范围,可选值currentPage、serverAll
- maxSize int 1000 导出数据最大记录数
- fileName String 空 导出报表文件名称
- extension String xls 导出报表类型,可选值xls、xlsx、pdf,如果导出的excel数据量比较大,建议配置成xlsx格式
- 事件名称:onGetExportData(self,arg)
- 客户端获取导出的数据时触发,arg.id 导出模板控件idarg.data 导出的数据
设置属性dataScope为currentPage,在事件onGetExportData上定义待导出的excel数据,例如导出DataGrid中用户勾选的数据,代码如下所示:
var grid=view.id(arg.id);
if(grid instanceof dorado.widget.DataGrid){
//获取表格中勾选的数据
arg.data=grid.get("selection");
}
如果需要对服务端导出的数据做拦截,则需要写一个实现org.malagu.panda.export.interceptor.IDataInterceptor接口的类,并配置的spring上下文环境中,然后指定Export2ReportAction控件的属性interceptorName值为实现类中getName()方法返回的名称。 例如对上面示例中的DataGrid控件列“是否是管理员”、“是否可用”做中文格式化处理,同时动态在服务端添加一条导出记录,则实现类定义如下所示:
package com.test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Component;
import org.malagu.panda.export.interceptor.IDataInterceptor;
@Component
public class UserReportDataInterceptor implements IDataInterceptor {
public String getName() {
return "userReportDataInterceptor";
}
public String getDesc() {
return "服务端表格数据拦截自定义演示";
}
public void interceptGridData(List<Map<String, Object>> list)
throws Exception {
for (Map<String, Object> user : list) {
if (user.get("administrator") != null) {
user.put("administrator",((Boolean) user.get("administrator")) == true ? "是": "否");
}
if (user.get("enabled") != null) {
user.put("enabled",((Boolean) user.get("enabled")) == true ? "是" : "否");
}
}
Map<String, Object> insertUser=new HashMap<String, Object>();
insertUser.put("username", "user4");
insertUser.put("cname", "user4");
insertUser.put("ename", "user4");
list.add(insertUser);
}
public void interceptAutoFormData(List<Map<String, Object>> list)
throws Exception {
}
}
同时,在Export2ReportAction控件中指定属性interceptorName为userReportDataInterceptor