Hutool工具类实现Excel的导入和导出
程序员文章站
2022-04-17 17:33:35
...
在工作中Excel的导入和导出应该算是简单的业务吧,之前有用原生的写过,使用Hutool工具类实现此功能还是第一次。官网地址:https://hutool.cn/docs/ 第一次接触的小伙伴们可以自行进行阅读,此博客只介绍在项目中的应用及自己踩到的坑,高手可以忽略,不喜勿喷!
导出Excel
public void getComExcelService(HttpServletResponse response) {
List<ZbComVo> mqSendTaskDTO = zbComMapper.selectZbProExcel();
System.err.println(mqSendTaskDTO.toString());
for(ZbComVo zcv:mqSendTaskDTO){
if(zcv != null){
ExcelWriter writer = cn.hutool.poi.excel.ExcelUtil.getWriter(true);
writer.addHeaderAlias("comName", "企业名称");
writer.addHeaderAlias("comQybm", "企业编码");
writer.addHeaderAlias("comQyxz", "企业性质");
writer.addHeaderAlias("comFrdb", "法人代表");
writer.addHeaderAlias("comStszsf", "所在省份");
writer.addHeaderAlias("comZz", "资质");
writer.addHeaderAlias("comWz", "违章");
writer.addHeaderAlias("comLxdw", "联系单位");
writer.addHeaderAlias("comZxdz", "注册地址");
writer.write(mqSendTaskDTO, true);
writer.autoSizeColumnAll();
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
response.setHeader("Content-Disposition","attachment;filename="+ UUID.randomUUID().toString().replace("-","")+ ".xlsx");
ServletOutputStream out= null;
try {
out = response.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
writer.flush(out, true);
// 关闭writer,释放内存
writer.close();
//此处记得关闭输出Servlet流
IoUtil.close(out);
}
}
}
说明:
1.首先调用dao层方法,得到需要导出的实体集合。
2. 细心的朋友已经发现,我这里用到的是实体的包装类ZbComVo,这也是需要注意的地方。这里需要创建一个实体,只返回Excel中需要导出的字段,实体进行序列化就可以了(在测试过程中发现如果返回的实体中包含了其他字段,那Excel中就会显示空。测试的时候很是尴尬,如果有遇到类似问题的欢迎提出宝贵的解决办法)。
3.可以自定义表格样式,详情可参考官方文档。最后注意关闭流。
如此就实现了Excel的导出!!!
Excel的导入
public List<ZbComVo> getZbComExcelService(InputStream inputStream) {
ExcelReader writer = cn.hutool.poi.excel.ExcelUtil.getReader(inputStream);
writer.addHeaderAlias("企业名称", "comName");
writer.addHeaderAlias("企业编码","comQybm");
writer.addHeaderAlias("企业性质","comQyxz");
writer.addHeaderAlias("法人代表","comFrdb");
writer.addHeaderAlias("所在省份","comStszsf");
writer.addHeaderAlias("资质","comZz");
writer.addHeaderAlias("违章","comWz");
writer.addHeaderAlias("联系单位","comLxdw");
writer.addHeaderAlias("注册地址","comZxdz");
List<ZbComVo> zbComs = writer.readAll(ZbComVo.class);
System.out.println(zbComs.toString());
return zbComs;
}
说明:
导入和导出除了上面所说的注意事项,还要注意的是在导入时,这刚好和导出是相反的操作吧(说法不太准确),如此便实现了Excel的导入和导出。在使用Hutool工具类实现Excel的导入和导出时,如果有遇到其它问题,欢迎留言探讨。。。
上一篇: MYSQL数据库基础(二 关于字符串函数与Date函数的使用)
下一篇: mybatis****
推荐阅读
-
结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程
-
JS module的导出和导入的实现代码
-
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
-
PHP实现CSV文件的导入和导出类
-
使用PHP_XLSXWriter代替PHPExcel 实现excel数据的导入导出
-
java使用POI实现excel文件的导入和导出(通用方法)
-
使用导入样式和导出样式功能在不同的文档间实现复制
-
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
-
Java和.Net版通用工具类实现--生成自定义Web Html/Excel测试用例和测试报告
-
Java POI 导入导出 Excel 的方式和区别