使用POI读取Excel数据入库

朱雀 2020-10-18 00:22 1139阅读 0赞

首先先添加poi的依赖

  1. <dependency>
  2. <groupId>org.apache.poi</groupId>
  3. <artifactId>poi</artifactId>
  4. <version>3.13</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.poi</groupId>
  8. <artifactId>poi-ooxml</artifactId>
  9. <version>3.13</version>
  10. </dependency>

直接上代码

先判断一下Excel的文件格式,然后再用for循环来循环取数据,最后将数据插入数据库中。

  1. package com.example.demo.service;
  2. import com.example.demo.entity.*;
  3. import com.example.demo.mapper.ExcelMapper;
  4. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  5. import org.apache.poi.ss.usermodel.Cell;
  6. import org.apache.poi.ss.usermodel.Row;
  7. import org.apache.poi.ss.usermodel.Sheet;
  8. import org.apache.poi.ss.usermodel.Workbook;
  9. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import java.io.InputStream;
  13. import java.text.SimpleDateFormat;
  14. import java.util.ArrayList;
  15. import java.util.Date;
  16. import java.util.List;
  17. import java.util.TimeZone;
  18. /**
  19. * @Author:
  20. * @Description:
  21. * @Date:
  22. */
  23. @Service
  24. public class ExcelService {
  25. @Autowired
  26. private ExcelMapper userMapper;
  27. /**
  28. * 判断文件格式
  29. *
  30. * @param inStr
  31. * @param fileName
  32. * @return
  33. * @throws Exception
  34. */
  35. public Workbook getWorkbook(InputStream inStr, String fileName) throws Exception {
  36. Workbook workbook = null;
  37. String fileType = fileName.substring(fileName.lastIndexOf("."));
  38. if (".xls".equals(fileType)) {
  39. workbook = new HSSFWorkbook(inStr);
  40. } else if (".xlsx".equals(fileType)) {
  41. workbook = new XSSFWorkbook(inStr);
  42. } else {
  43. throw new Exception("请上传excel文件!");
  44. }
  45. return workbook;
  46. }
  47. /**
  48. * 处理上传的文件
  49. *
  50. * @param in
  51. * @param fileName
  52. * @return
  53. * @throws Exception
  54. */
  55. public List getBankListByExcel(InputStream in, String fileName) throws Exception {
  56. List list = new ArrayList<>();
  57. //创建Excel工作薄
  58. Workbook work = this.getWorkbook(in, fileName);
  59. if (null == work) {
  60. throw new Exception("创建Excel工作薄为空!");
  61. }
  62. Sheet sheet = null;
  63. Row row = null;
  64. Cell cell = null;
  65. System.out.println(fileName+" ++++++++++ "+work.getNumberOfSheets());
  66. for (int i = 0; i < work.getNumberOfSheets(); i++) {
  67. sheet = work.getSheetAt(i);
  68. if (sheet == null) {
  69. continue;
  70. }
  71. int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
  72. for (int j = sheet.getFirstRowNum(); j <= physicalNumberOfRows; j++) {
  73. int lastRowNum = sheet.getLastRowNum();
  74. //获取第一行
  75. Row row1 = sheet.getRow(0);
  76. //获取表头数量
  77. short lastCellNum = row1.getLastCellNum();
  78. System.out.println( "----- "+lastRowNum);
  79. row = sheet.getRow(j);
  80. if (row == null || row.getFirstCellNum() == j || row.getPhysicalNumberOfCells()==0) {
  81. continue;
  82. }
  83. List<Object> li = new ArrayList<>();
  84. for (int y = row.getFirstCellNum(); y < lastCellNum; y++) {
  85. cell = row.getCell(y);
  86. if(cell == null){
  87. row.createCell(y).setCellValue("");
  88. }else {
  89. cell.setCellType(Cell.CELL_TYPE_STRING);
  90. }
  91. li.add(cell);
  92. }
  93. if(i==0){
  94. //私有方法
  95. this.doMember(row);
  96. }else if(i==1){
  97. this.doIrs(row);
  98. }else if(i==2){
  99. this.doOuter(row);
  100. }else if(i==3){
  101. this.doWorkrecord(row);
  102. }else{
  103. this.doEvent(row);
  104. }
  105. list.add(li);
  106. }
  107. }
  108. work.close();
  109. return list;
  110. }
  111. private void doMember(Row row){}
  112. private void doIrs(Row row){}
  113. private void doOuter(Row row){}
  114. private void doEvent(Row row){}
  115. private void doWorkrecord(Row row){}
  116. }

发表评论

表情:
评论列表 (有 0 条评论,1139人围观)

还没有评论,来说两句吧...

相关阅读