当前位置:   article > 正文

springboot+poi+vue实现excel导入_springboot + vue poi excel 导入

springboot + vue poi excel 导入

一、准备工作(可参考上一篇excel导出)

二、实现步骤

        1.将文件“上传到后端”

        2.后端对文件进行解析

        3.把解析后的数据持久化到数据库

三、实现

 1.调用elementui的上传控件

  1. <el-upload style="display: inline-flex;margin-right: 8px"
  2. class="upload-demo" :show-file-list="false"
  3. :disabled="disableFlag"
  4. action="/special/basic/import">
  5. <el-button type="success" :icon="showIcon" :disabled="disableFlag" size="mini">导入数据</el-button>

2.后端接收数据

  1. @PostMapping("/import")
  2. public RespBean specialImport(MultipartFile file){
  3. //1.对上传的进行解析
  4. List<SpecialZone> list = POIUtil.excel2SpecialZone(file);
  5. // 解析后的文件内容存入数据库
  6. specialZoneService.batchAddSpecial(list);
  7. return RespBean.ok("导入成功");
  8. }

3.具体解析方法

  1. public static List<SpecialZone> excel2SpecialZone(MultipartFile file) {
  2. List<SpecialZone> list =new ArrayList<>();
  3. SpecialZone specialZone=null;
  4. try {
  5. //1.创建HSSFWorkbook对象
  6. HSSFWorkbook workbook = new HSSFWorkbook(file.getInputStream());
  7. //2.创建sheets
  8. int numberOfSheets = workbook.getNumberOfSheets();
  9. for (int i = 0; i <numberOfSheets ; i++) {
  10. //遍历每个sheet 解析sheet
  11. HSSFSheet sheetAt = workbook.getSheetAt(i);
  12. //遍历每个sheet的行
  13. int physicalNumberOfRows = sheetAt.getPhysicalNumberOfRows();
  14. for (int j = 0; j < physicalNumberOfRows; j++) {
  15. // 标题行跳过
  16. if (j==0){
  17. continue;
  18. }
  19. HSSFRow row = sheetAt.getRow(j);
  20. // 跳过空行
  21. if ( row == null){
  22. continue;
  23. }
  24. // 获取列数
  25. int physicalNumberOfCells = row.getPhysicalNumberOfCells();
  26. specialZone= new SpecialZone (); //每一行即为一个对象
  27. for (int k = 0; k < physicalNumberOfCells; k++) {
  28. HSSFCell cell = row.getCell(k);
  29. //根据列单元格的格式解析 分为字符串和时间格式
  30. switch (cell.getCellType()){
  31. case STRING:
  32. String cellValue = cell.getStringCellValue();
  33. //再根据每列序号解析每列
  34. switch (k){
  35. case 1:
  36. specialZone.setSpecialZoneNo(cellValue);
  37. break;
  38. case 2:
  39. specialZone.setSpecialZoneName(cellValue);
  40. break;
  41. }
  42. break;
  43. default:
  44. //再根据每列序号解析每列
  45. switch (k){
  46. case 3:
  47. specialZone.setSpecialZoneDate(cell.getDateCellValue());
  48. break;
  49. }
  50. }
  51. list.add(specialZone);
  52. }
  53. }
  54. } catch (IOException e) {
  55. e.printStackTrace();
  56. }
  57. return list;
  58. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/283701
推荐阅读
相关标签
  

闽ICP备14008679号