springboot中使用easyExcel读取excel中的内容

在Spring Boot中使用easyExcel库可以非常简便地将本地Excel文件内容读取并存入Java对象列表中。easyExcel是一个基于Apache POI但更加简洁易用的库,它专注于性能和内存占用的优化。

首先,你需要在pom.xml中添加easyExcel的依赖(如果你使用Maven):

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>最新版本</version> <!-- 请检查并使用最新版本 -->
</dependency>

然后,创建一个Java对象(DTO)来表示Excel文件中的数据行:

import com.alibaba.excel.annotation.ExcelProperty;

public class DataRow {
   

    @ExcelProperty("列1标题")
    private String column1;

    @ExcelProperty("列2标题")
    private String column2;

    // 省略getter和setter方法
}

在上面的代码中,@ExcelProperty注解用于指定Excel列与Java对象字段之间的映射关系。

接下来,编写一个服务类来读取Excel文件并将其内容转换为Java对象列表:

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.metadata.ReadSheet;

import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Service
public class ExcelService {
   

    public List<DataRow> readExcel(MultipartFile file) throws IOException {
   
        List<DataRow> dataRows = new ArrayList<>();
        EasyExcel.read(file.getInputStream(), DataRow.class, new ReadListener<DataRow>() {
   
            @Override
            public void invoke(DataRow dataRow, ReadContext context) {
   
                dataRows.add(dataRow);
            }

            @Override
            public void doAfterAllAnalysed(ReadContext context) {
   
                // 所有数据解析完成后会调用此方法,可以在这里执行后续操作
            }
        }).sheet().doRead(); // 这里指定了读取所有sheet,可以根据需要指定sheet

        return dataRows;
    }
}

注意:在实际生产代码中,你可能需要处理更大的Excel文件,而上面的代码示例在内存使用方面可能不是最优的。easyExcel提供了一个基于事件的API来处理大数据量,以避免内存溢出。在这个例子中,我们简化了代码以便于理解,但对于大数据量,你应该使用ExcelReaderReadListener的异步读取方式。

最后,在控制器中调用这个服务来处理文件上传:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@RestController
public class ExcelController {
   

    @Autowired
    private ExcelService excelService;

    @PostMapping("/upload")
    public List<DataRow> uploadExcel(@RequestParam("file") MultipartFile file) throws IOException {
   
        return excelService.readExcel(file);
    }
}

这样,当前端上传Excel文件到/upload端点时,后端会读取文件内容,将其转换为DataRow对象列表,并返回给前端。记得在前端HTML中设置一个表单来上传文件,如之前的例子所示。

相关推荐

  1. springboot使用easyExcel读取excel内容

    2024-01-26 16:02:04       57 阅读
  2. springboot】【easyexcelexcel文件读取

    2024-01-26 16:02:04       60 阅读
  3. 在flask服务远程读取Excel内容

    2024-01-26 16:02:04       40 阅读
  4. 使用python读取多类型文件夹文档内容

    2024-01-26 16:02:04       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-26 16:02:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-26 16:02:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-26 16:02:04       82 阅读
  4. Python语言-面向对象

    2024-01-26 16:02:04       91 阅读

热门阅读

  1. sql server 查询所有表的记录条数

    2024-01-26 16:02:04       54 阅读
  2. postgresql 表锁定问题处理

    2024-01-26 16:02:04       47 阅读
  3. 单元测试之道

    2024-01-26 16:02:04       42 阅读
  4. [NOIP2000 提高组] 单词接龙 C++

    2024-01-26 16:02:04       65 阅读
  5. 第九章:分布式训练

    2024-01-26 16:02:04       49 阅读
  6. [go] 备忘录模式

    2024-01-26 16:02:04       42 阅读
  7. SQL 系列教程(六)

    2024-01-26 16:02:04       39 阅读
  8. 0.0 pyside6--最美不过初相见

    2024-01-26 16:02:04       49 阅读