刚接JEECG不久,对这个框架并不是很熟悉,然后项目经理直接跟我说让我熟悉下JEECG中Excel的导入导出,身为一个刚毕业的java开发小白心疼的抱住自己。然后我就开始看JEECG关于Excel表格导出导入的开发文档,然后自己尝试着写导出,下面以普通的Excel导出为例讲具体的示例代码给大家讲一下:
PS:我在此粘贴的代码都是局部代码,并不是全部的,仅作为示例和参考
第一部分:XXXList.jsp页面
<t:datagrid name="caUUserList" title="会员信息" actionUrl="caUUserController.do?datagrid" idField="id" fit="true"queryMode="group">
<t:dgCol title="用户编号" field="id" queryMode="single" query="true" autocomplete="true" width="50"></t:dgCol>
<t:dgCol title="用户昵称" field="nickName" queryMode="single" query="false" autocomplete="true" width="80"></t:dgCol>
<t:dgCol title="用户性别" field="sex" replace="男_1,女_2,保密_0" queryMode="single" query="true" autocomplete="true" width="50"></t:dgCol>
<t:dgCol title="用户等级" field="level" queryMode="single" query="true" autocomplete="true" width="50"></t:dgCol>
<t:dgCol title="操作" field="opt"></t:dgCol>
<t:dgToolBar title="导出Excel" icon="icon-putout" onclick="ExportXls();"></t:dgToolBar>
</t:datagrid>
<script>
//导出报表示例
function ExportXls(){
//第一个参数是导出url,第二个是datagrid的名称.
JeecgExcelExport("caUUserController.do?exportXls","caUUserList");
}
</script>
解释一下,在代码中标红的那两个属性设置,是我看了网上好多资料和有关示例强调的,说一定要写上,queryMode是查询模式,group是组合查询(这样导出是条件导出),如果不写的话可能会导致导出的excel表格数据为空,然后autocomplete是自动补全,具体会影响什么我目前还没摸索明白,欢迎大家帮我解惑。然后js里面写的就是导出报表的请求。
第二部分:entity实体的改动
@Entity
@Table(name = "ca_u_user", schema = "")
@DynamicUpdate(true)
@DynamicInsert(true)
@SuppressWarnings("serial")
@ExcelTarget(value = "caUUser")
public class CaUUser implements java.io.Serializable {
@Column(name = "nickName")
@Excel(name="名称")
private java.lang.String nickName;
@Column(name = "sex")
@Excel(name="性别",replace = {"保密_0","男_1","女_2"})
private java.lang.Integer sex;
@Column(name = "vipExpireTime")
@Excel(name="vip到期时间",format="yyyy-MM-dd")
private java.util.Date vipExpireTime;
。。。。get、set方法
}
实体的改动就是红色标注的地方而且再此我给大家列举了比较常用的性别的replace和时间日期的格式化,这个在开发手册上都有,要注意一点的是@ExcelTarget(value = "caUUser")这里的value开头字母最好是小写。
第三部分:controller的改动
/**
* 导出excel
* 普通导出
* @param request
* @param response
* @return
*/
@RequestMapping(params = "exportXls")
public String exportXls(CaUUser caUUser,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
CriteriaQuery cq = new CriteriaQuery(CaUUser.class, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, caUUser, request.getParameterMap());
List<CaUUser> caUUsers = this.caUUserService.getListByCriteriaQuery(cq,false);
modelMap.put(NormalExcelConstants.FILE_NAME,"会员信息表");
modelMap.put(NormalExcelConstants.CLASS,CaUUser.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("会员信息表", "导出人:sdpl","导出信息"));
modelMap.put(NormalExcelConstants.DATA_LIST,caUUsers);
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
这一部分没有什么特别难的点,在初次使用时参考开发手册来,把对应的实体和service替换掉就好了,关于模板导出和其他的我还没仔细研究,后续(最近加班加成狗)如果使用到的话我会整理好分享给朋友们,不过仅仅是使用的话我猜并不会很难,这毕竟是人家团队封装好的框架,学无止境,有时间研究下源码。
在本文最后我给大家分享一个连接,也是我在初次使用jeecg的excel导入导出时讲得比较明白的一篇文章。
http://www.bubuko.com/infodetail-1966412.html
我只是一个刚入行的新人,在工作中靠自己摸索明白一些东西想以这种方式记录下来,温故而知新,我不奢求我可以帮到别人什么,因为作为一个新人由于工作经验的欠缺对一些技术和一些原理理解的肯定不够准确和透彻,如果有人看了我写的,从中获得了帮助,那我很高兴。