SpringBoot集成EasyExcel实现excel的导入导出 |
您所在的位置:网站首页 › vue怎么访问数据库 › SpringBoot集成EasyExcel实现excel的导入导出 |
在我们做的系统中,经常需要通过excel文件导入添加到我们的数据库,并需要将数据库的列表进行导出保存到本地,那么,SpringBoot应该如何操作呢? 首先EasyExcel官网地址:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 前情提要:本例子的前端用的是vue、element-ui 1.导入依赖 com.alibaba easyexcel 3.3.22.将实体类与表进行规范 ExcelProperty意思相信大家也看得出来,就是将实体类的变量与excel表格的列对应起来。容易理解。 接下来就是写接口了 3.导入 /** * 导入的excel文件对象是MultipartFile类型的 * @param file * @throws IOException */ @PostMapping("/import") public void ExcelImport(MultipartFile file)throws IOException{ InputStream is = file.getInputStream(); UserReadListener userReadListener = new UserReadListener(userMapper); EasyExcel.read(is,User.class,userReadListener) .sheet(0) .headRowNumber(1) .doRead(); }UserReadListener是一个关键的地方,这里其实就是导入的对象监听器 import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; import com.cbz.springboot.mapper.UserMapper; public class UserReadListener implements ReadListener { private UserMapper userMapper; public UserReadListener(UserMapper userMapper){ this.userMapper = userMapper; } @Override public void invoke(User user, AnalysisContext analysisContext) { System.out.println("读取到:"+user); userMapper.insert(user); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { System.out.println("读取完毕!!!"); } }实现ReadListener类的2个方法,invoke就是文件的每一行(除了列名)都会执行一下,所以我们就需要添加到我们的数据库中!doAfterAllAnalysed就是文件的所有内容读取完的时候就会执行一下这个函数。 那么这里为什么不是用Autowired注解来注入UserMapper呢? 答:因为ReadListener不是spring的一个组件,不能进行自动装配! 4.导出 //导出 @GetMapping("/export") public void ExcelExport(HttpServletResponse response)throws IOException { List users = userMapper.selectList(null); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");//.xlsx格式 response.setCharacterEncoding("utf-8"); String fileName = URLEncoder.encode("用户数据", "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-disposition","attachment;filename="+fileName+".xlsx"); EasyExcel.write(response.getOutputStream()) .head(User.class) .excelType(ExcelTypeEnum.XLSX) .sheet("用户数据") .doWrite(users); }.sheet("用户数据")意思就是如下
第一句: List users = userMapper.selectList(null);就是把数据库的内容全部查找出来 接下来再写到excel里面,然后再导出! ~~~~~~~~~~~~~~~~~后端到这里结束了,我们看看前端 exportExcel(){ window.open("http://localhost:9090/user/export") }, handleImportSuccess(){ this.$message.success("导入成功!") this.load() } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |