软件开发定制定制使用hutool工具进行导入导出excel表格

软件开发定制定制如何在后台添加导入导软件开发定制定制出表格的功能呢,软件开发定制定制本期的文章将会带领小伙伴们一起实现此功能

 

1.先引入hutool的相关依赖

  1. <!--hutool-->
  2. <dependency>
  3. <groupId>cn.hutool</groupId>
  4. <artifactId>hutool-all</artifactId>
  5. <version>5.7.20</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.apache.poi</groupId>
  9. <artifactId>poi-ooxml</artifactId>
  10. <version>4.1.2</version>
  11. </dependency>

2.导出 

创建一个Controller进行测试 

  1. //表格导出接口
  2. @GetMapping("/export")
  3. public void export(HttpServletResponse response) throws IOException {
  4. //查询所有用户
  5. List<User> list= userService.list();
  6. //在内存操作,写到浏览器
  7. ExcelWriter writer= ExcelUtil.getWriter(true);
  8. //自定义标题别名
  9. writer.addHeaderAlias("username","用户名");
  10. writer.addHeaderAlias("password","密码");
  11. writer.addHeaderAlias("nickname","昵称");
  12. writer.addHeaderAlias("email","邮箱");
  13. writer.addHeaderAlias("phone","电话");
  14. writer.addHeaderAlias("address","地址");
  15. writer.addHeaderAlias("createTime","创建时间");
  16. //默认配置
  17. writer.write(list,true);
  18. //设置content—type
  19. response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset:utf-8");
  20. //设置标题
  21. String fileName= URLEncoder.encode("用户信息","UTF-8");
  22. //Content-disposition是MIME协议的扩展,MIME协议指示MIME用户代理如何显示附加的文件。
  23. response.setHeader("Content-Disposition","attachment;filename="+fileName+".xlsx");
  24. ServletOutputStream outputStream= response.getOutputStream();
  25. //将Writer刷新到OutPut
  26. writer.flush(outputStream,true);
  27. outputStream.close();
  28. writer.close();
  29. }

测试结果如下

Vue前端使用这个代码进行访问即可

  1. //点击函数exp, 导出表格
  2. exp(){
  3. window.open("http://localhost:9090/user/export")
  4. }

3.导入

创建一个Controller进行测试 

因为我前面导出设置了别名,所以这里我选择用第二种方式,

接下来可以去验证是否能实现功能

  1. /**
  2. * 导入excel
  3. * @param file
  4. */
  5. @PostMapping("/import")
  6. public void importExcel(MultipartFile file) throws IOException {
  7. //1.第一种 头必须和实体(英文)一样
  8. //文件处理成io流
  9. InputStream in = file.getInputStream();
  10. // //io流给ExcelReader
  11. ExcelReader excelReader=ExcelUtil.getReader(in);
  12. // //读取数据且转化为list
  13. // List<User> list = excelReader.readAll(User.class);
  14. //2.第二种导入方式
  15. //忽略第一行头(第一行是中文的情况),直接读取表的内容
  16. List<List<Object>> list = excelReader.read(1);
  17. List<User> listUser = CollUtil.newArrayList();
  18. for (List<Object> row: list) {
  19. User user=new User();
  20. user.setUsername(row.get(0).toString());
  21. user.setPassword(row.get(1).toString());
  22. user.setNickname(row.get(2).toString());
  23. user.setNickname(row.get(3).toString());
  24. user.setPhone(row.get(4).toString());
  25. user.setAddress(row.get(5).toString());
  26. listUser.add(user);
  27. // ****类似一一对应****
  28. }
  29. //批量注册进数据库
  30. userService.saveBatch(listUser);
  31. }

前端的话我是用的elemen-ui

  1. <el-upload action="http://localhost:9090/user/import"
  2. :show-file-list="false" accept="xlsx"
  3. :on-success="handleImportSuccess"
  4. style="display: inline-block;margin-right: 5px">
  5. <el-button type="primary">导入 <i class="el-icon-bottom"></i></el-button>
  6. </el-upload>

on-success是一个钩子函数,弹了一个插入成功的信息跟刷新页面的操作

  1. //导入,钩子函数进行页面的提示跟成功后页面的刷新
  2. handleImportSuccess(){
  3. this.$message.success("导入成功")
  4. this.load();
  5. }

4.效果图为

5.本期的表格导入导出就分享到这啦,如果有其他需要的小伙伴可以评论区留言,代码代码敲不停

 

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发