springboot使用POI读取excel

355 阅读1分钟

1、导入依赖

  
      <!-- poi依赖 -->
      <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi-ooxml</artifactId>
          <version>3.17</version>
      </dependency>
      <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi</artifactId>
          <version>3.17</version>
      </dependency>

2、写controller

      
      @PostMapping("/importExcel")
      public ResultEntity importExcel(@RequestParam MultipartFile file){
          try {
             Workbook workbook = WorkbookFactory.create(file.getInputStream());
              Sheet sheet = workbook.getSheetAt(0);
  ​
              //获得当前sheet的开始行
              int firstRowNum = sheet.getFirstRowNum();
              //获得当前sheet的结束行
              int lastRowNum = sheet.getLastRowNum();
  ​
  ​
              for (int rowNum = firstRowNum + 1; rowNum <= lastRowNum; rowNum++) {
                  //获得当前行
                  Row row = sheet.getRow(rowNum);
  ​
                  if (row == null) {
                      continue;
                  }
  ​
                  //第一列
                  _1 = (String) PoiUtil.getCellDate(row,0,CellType.STRING);
  ​
                //第二列
                  _2 = (String) PoiUtil.getCellDate(row,1,CellType.STRING);
              }
  ​
              return new ResultEntity();
          } catch (Exception e) {
              e.printStackTrace();
              return new ResultEntity(StringUtils.isEmpty(e.getMessage()) ? "导入文件失败" : e.getMessage());
          }
      }

工具类:

import com.hooks.hooksspringbootstarter.util.StringUtils;
  import org.apache.poi.ss.usermodel.CellType;
  import org.apache.poi.ss.usermodel.Row;
  ​
  /**
   * @Author: 
   * @Date: 
   * @Description:
   */
  public class PoiUtil {
  ​
  ​
      /**
       *
       * @param row  行
       * @param cellNum   当前行的第几个单元格
       * @param cellType  单元格类型 {@link org.apache.poi.ss.usermodel.CellType}
       * @return
       */
      public static Object getCellDate(Row row, int cellNum, CellType cellType){
          if (StringUtils.isEmpty(row.getCell(cellNum))){
              return "";
          }else {
              row.getCell(cellNum).setCellType(cellType);
              switch (cellType){
                  case STRING:
                      return row.getCell(cellNum).getStringCellValue();
  ​
                  case NUMERIC:
                      return row.getCell(cellNum).getNumericCellValue();
                 
                  default:
                      return "";
              }
          }
      }
  ​
  }
  ​