转载

Spring boot解析excel

添加依赖

注:

artifactID为poi,表示适配旧版office/excel (2003及之前版本版本, .xls)*

artifactID为poi-ooxml,表示新版office/excel (2007及之后版本, .xlsx)*

建议根据情况导入依赖,若不确定输入excel版本,两者同时引入即可。

此处确定输入excel为2007后版本,所以只引入poi-ooxml

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

使用场景

此项目中只涉及到Excel upload和解析,不涉及导出操作。

项目配置

Thymeleaf+Spring boot+mybatis+lombok+mysql

Thyme leaf相关配置

  1. 添加依赖

    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-thymeleaf</artifactId>
     </dependency>
  2. templates页面添加index.html

    <form action="/upload" method="post" enctype="multipart/form-data">
         <input type="file" name="file" >
         <button type="submit">上传</button>
    </form>
  3. 后端设置controller - 设定传入参数类型为 MultipartFile

    @PostMapping("upload")
     public List<PriceInfoEntity> importEmp(@RequestParam("file") MultipartFile file) throws IOException
  4. excel解析

    2003版本(包含2003)以前的扩展名为.xls需要用HSSFWorkbook类操作

    2007版本(包含2007)以后的扩展名为.xlsx需要用XSSFWorkbook类操作

    获得sheet

    XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
    XSSFSheet sheet = workbook.getSheetAt(0);

    根据sheet的row number,获得row

    for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
         XSSFRow row = sheet.getRow(i);

    获得row中的cell

    row.getCell(0).getStringCellValue().trim(),
  5. 处理结束后关闭workbook

    workbook.close();
原文  https://segmentfault.com/a/1190000022683399
正文到此结束
Loading...