easyui datagrid 表格内容导出为Excel (使用easypoi,单sheet非模板)

1.概况

背景:SSM框架下的maven管理项目

需求:将datagrid前端展示的表格导出为Excel文件

插件:easypoi(现成的轮子)

备注:此方法只要引入插件,并且有获取datagrid的数据源方法就足够完成了,导出的样式是单sheet非模板的Excel表格。

2.实现

整体思路

1.引入插件jar包

2.前台页面添加导出按钮和点击事件

3.后台导出处理:

1)两个List,一个是你的datagrid数据源,一个是与数据源对应,用于导出设置的泛型ExcelExportEntity的List

2)进行各种设置后就可以导出啦!

 

1)pom.xml文件引入easypoi依赖

	<!-- easyPoi -->
		<dependency>
	           <groupId>org.jeecg</groupId>
	           <artifactId>easypoi-base</artifactId>
	           <version>2.4.0</version>
	       </dependency>
	       <dependency>
	           <groupId>org.jeecg</groupId>
	           <artifactId>easypoi-web</artifactId>
	           <version>2.4.0</version>
	       </dependency>
	       <dependency>
	           <groupId>org.jeecg</groupId>
	           <artifactId>easypoi-annotation</artifactId>
	           <version>2.4.0</version>                  
	       </dependency>

2)前台页面添加导出表格按钮和按钮点击事件

按钮:

<a id='export'>导出表格</a>

事件:

	$('#export').on('click',function(){
		if($('#dg').datagrid('getData').total == 0){
			return;
		}else{	
			window.location='<%=basePath%>export/exportExcel';
		}
	});

其中dg是要导出的datagrid的id,window.location后面跟的是导出表格的controller访问地址。

3)编写后台controller


	@RequestMapping("/exportExcel")
    public String dataExport(ModelMap modelMap) {
		try {
	              List<ExcelExportEntity> entityList = new ArrayList<ExcelExportEntity>();
		      entityList.add(new ExcelExportEntity("列1", "column1",40));//参数依次为(excel列名,结果集list的map主键,excel单元格宽度)
		      entityList.add(new ExcelExportEntity("列2", "column2",25));
		      entityList.add(new ExcelExportEntity("列3", "column3",25));
		      entityList.add(new ExcelExportEntity("列4", "column4",25));
		      entityList.add(new ExcelExportEntity("列5", "column5",25));
		      List<Map<String, Object>> dataResult =  (获取你datagrid数据的方法)
		      				
		        modelMap.put(MapExcelConstants.ENTITY_LIST, entityList);//放入你的excel列表设置
		        modelMap.put(MapExcelConstants.MAP_LIST, dataResult);//放入你的datagrid数据结果列表
                        modelMap.put(NormalExcelConstants.PARAMS, new ExportParams("我是文件标题",""));
		        modelMap.put(MapExcelConstants.FILE_NAME, "我是文件名",""));
           
		        return MapExcelConstants.JEECG_MAP_EXCEL_VIEW;
		}catch(Exception e) {
			this.logger.error(e.getMessage());
		}
 		return NormalExcelConstants.JEECG_EXCEL_VIEW;
    }

将表格内容导出,实际上是再次请求表格查询的方法,并把结果集导出;

上面用到两个列表:entityList和dataResult,entityList用的都是easypoi封装好的方法,主要是对导出后excel的列设置;dataResult是你的表格结果集,字段要与entityList设置的column1,column2...对应。

最终导出结果如图~

3.碎碎念

每次接触到没做过的模块都免不了头大,到处搜资料导出碰钉子哈,但往往实现后才发现根本不是这么复杂呀hhhh,做这个模块的时候我先引入的poi的依赖,又引入了easypoi的依赖,结果jar包冲突解决了半天...引入easypoi就已经包括poi的包了,毕竟是现成的轮子了,不过做之前我确实没这个概念?

多sheet模板导出可以参考我的这篇文章:poi实现列表导出多sheet模板excel文件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章