导出有两种方式,datagrid导出和自定义导出,同时支持异步导出
1、datagrid导出,需有datagrid表格组件
* 默认导出:datagrid组件上定义exportId属性,指定导出按钮即可,不需要写后端java代码,导出表头与表格表头定义一致,如某些列不想导出结果中展示,可设置表头配置属性exportable:false。
同步导出:默认为同步导出
```
<a href="javascript:void(0)" id="exportBtn"><img src="${ctx}/component/resources/images/icons/color/18/export.png" alt=""/>批量导出</a>
```
* 异步导出:需设置isAsyn=true,设置该属性后默认为即时导出,后台处理逻辑是开启新的线程进行导出,前台无需等待,可到“我的导出”菜单中查看导出进度,导出完成后显示下载按钮。
```
<a href="javascript:void(0)" id="exportBtn" isAsyn="true"><img src="${ctx}/component/resources/images/icons/color/18/export.png" alt=""/>批量导出</a>
```
* 定时导出:设置asynExportWay="2",逻辑是前台可设置预约导出时间,后台有进程扫描,到了预约时间进行数据导出操作,导出完成后依然是到“我的导出”菜单中查看进度。
```
<a href="javascript:void(0)" id="exportBtn" isAsyn="true" asynExportWay="2"><img src="${ctx}/component/resources/images/icons/color/18/export.png" alt=""/>批量导出</a>
```
同时预约导出时间也可代码指定,定义dateConfig属性。时间控件用的是my97日期组件
```
<a href="javascript:void(0)" id="exportBtn" isAsyn="true" asynExportWay="2" dateConfig="{readOnly:true, isShowClear:false, isShowToday:false, dateFmt:'yyyy-MM-dd HH:mm:ss', minDate:'%y-%M-%d 00:00:00'}"><img src="${ctx}/component/resources/images/icons/color/18/export.png" alt=""/>批量导出</a>
```
我的导出菜单路径:${ctx}/common/exportLog/toPage
完整例子如下:
```
<!--导出按钮-->
<a href="javascript:void(0)" id="exportBtn"><img src="${ctx}/component/resources/images/icons/color/18/export.png" alt=""/>批量导出</a>
<!--数据表格-->
<table id="dataGrid" class="easyui-datagrid" exportId="exportBtn" url="${ctx}/namelist/queryList" data-options="queryParams:$.walk.getQueryParams('conditionForm'),selectOnCheck:false,frozenAlign:'right'">
<thead data-options="frozen:true">
<tr>
<th data-options="field:'oper', width:430, halign:'center', formatter:operRecord, exportable:false">操作区</th>
</tr>
</thead>
<thead>
<tr>
<th data-options="field:'ck', checkbox:true, exportable:false"></th>
<th data-options="field:'LIST_ID',styler:function(){return 'font-family:新宋体'}">名单制客户ID</th>
<th data-options="field:'CUST_TYPE_NAME'">客户大类</th>
<th data-options="field:'SUB_CUST_TYPE_NAME'">客户小类</th>
<th data-options="field:'CALLING_TYPE_NAME2'">行业类型</th>
<th data-options="field:'CALLING_TYPE_NAME'">行业大类</th>
<th data-options="field:'CALLING_SUB_TYPE_NAME'">行业子类</th>
</tr>
</thead>
</table>
```
后端使用@DataExport注解进行限制导出类型
```
@RequestMapping(value = "queryUserList")
@DataExport(exportWay="1")
public Object queryUserList(InParam<String, Object> inParam, Pagination pagination){
return userDemoService.queryUserList(inParam, pagination);
}
```
DataExport 注解说明
```
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface DataExport {
/**
* xml文件路径
* @return
*/
String xml() default "";
/**
* 允许导出类型。0:同步立即导出;1:异步即时导出;2:异步定时导出
*
* @return
*/
String exportWay() default "0|1|2";
}
```
2、自定义导出:可后台自定义表头,灵活度更高。
baseInfoBigExport1.xml
```
<?xml version="1.0" encoding="utf-8"?>
<table name="名单制客户批量出">
<tr>
<th field="LIST_ID" title="名单制客户ID"/>
<th field="LIST_field" title="客户名称"/>
<th field="CUST_TYPE" title="客户大类"/>
<th field="SUB_CUST_TYPE" title="客户小类"/>
<th field="CALLING_TYPE_CODE" title="行业类型"/>
<th field="SUB_CALLING_TYPE_CODE" title="行业子类"/>
<th field="CUST_ADDR" title="客户地址"/>
<th field="CUST_MANAGER_ID" title="客户经理ID"/>
<th field="MAIN_WORK" title="主营业务"/>
<th field="EMPLOYEE_NUM" title="员工数量"/>
<th field="EMPLOYEE_ALLOWANCE" title="员工通信补助"/>
<th field="DEV_STAFF_ID" title="发展人编码"/>
</tr>
</table>
```
或者复杂一点的表头
baseInfoBigExport2.xml
```
<?xml version="1.0" encoding="utf-8"?>
<table name="名单制客户批量出">
<tr>
<th field="LIST_ID" title="名单制客户ID" rowspan="2"/>
<th field="LIST_field" title="客户名称" rowspan="2"/>
<th title="员工通信补助" colspan="2"/>
<th title="发展人编码" colspan="2"/>
</tr>
<tr>
<th field="LIST_ID" title="名单制客户ID"/>
<th field="LIST_field" title="客户名称"/>
<th field="EMPLOYEE_ALLOWANCE" title="员工通信补助"/>
<th field="DEV_STAFF_ID" title="发展人编码"/>
</tr>
</table>
```
后端controller方法定义DataExport注解,指定xml路径
```
/**
* 名单制客户自定义导出示例
*
* @param inParam
* @param pagination
* @return
*/
@RequestMapping(value = "/exportList")
@DataExport(xml = "namelist/baseInfoBigExport1.xml")
public Object exportList(InParam<String, Object> inParam, Pagination pagination) {
return nameListService.queryNameList(inParam, pagination);
}
```
前端js方法
```
//queryParams可以是json也可是参数串(param1=1¶m2=2)
//isAsyn为异步导出标识,同上
$.walk.exportData(url, queryParams, isAsyn);
```
- walk简介
- 核心模块
- walk-data
- IData
- EntityHelper
- walk-cache
- 缓存管理器
- 缓存对象
- 缓存注解
- walk-batis
- 单表操作
- 批量操作
- 列表/分页查询
- 所有方法列表
- sql热部署
- 二级缓存
- 数据库方言
- 其他使用技巧
- 实体类生成工具
- walk-mq
- 队列管理器
- 队列对象
- 订阅/发布管理器
- 订阅器
- 发布器
- walk-shiro
- 用户认证/授权
- url动态授权/回收
- 分布式会话
- 无状态会话支持
- walk-base
- 前端基础框架
- 公共页面
- 自定义标签
- 自定义函数
- 组件及工具
- 后端基础框架
- 基础结构
- 表单校验
- 数据导入
- 数据导出
- 上传下载
- 静态参数加载器
- 静态参数翻译器
- 实体类翻译器
- sql翻译器
- 自定义翻译器
- 静态参数校验器
- 分布式任务
- 增删改查代码生成器
- walk-restful
- 请求报文
- 返回报文
- 节点翻译器
- api代码生成
- walk-activiti
- 接口封装
- 模型管理
- 流程图展示
- 集成方法
- walk-console
- 在线会话管理
- 静态参数表缓存管理
- 缓存管理
- 队列管理
- 发布/订阅管理
- walk-boot
- 常用功能
- 持久层操作
- 分布式缓存
- 分布式会话
- 分布式任务
- 前端常用功能
- 后端常用功能
- 工作流封装
- 多数据源支持
- 关于读写分离
- 常用工具类
- 代码生成工具
- SpringCloud集成
- 阿里edas平台支持
- 其他
- 开发规约
- 环境要求
- 工程示例
- 工程结构
- web工程
- API工程
- 后台任务
- 常见问题
- 事务不生效
- 分布式任务不生效
- 事务锁
- 变更历史