专业的JAVA编程教程与资源

网站首页 > java教程 正文

一个最简单的easyExcel导入excel的例子

temp10 2024-11-17 15:56:20 java教程 12 ℃ 0 评论

平时我们在开发中,经常会遇到excel导入的问题,阿里巴巴不的easyExcel可以快速的帮助我们完成excel数据的解析,封装成指定的Java对象,方便我们快速的进行面向对象的编程。

下面是使用EasyExcel实现上传Excel文件,导入数据的一个例子,要求使用注解标记字段映射:

一个最简单的easyExcel导入excel的例子

  1. 添加EasyExcel的依赖和Lombok的依赖

在pom文件中添加如下的依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.5.0</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.20</version>
    <scope>provided</scope>
</dependency>

在之后的代码中使用了Lombok注解@Data、@NoArgsConstructor来自动生成getter、setter、默认构造方法等方法。

  1. 创建实体类

我们定义如下的实体类来对应Excel文件中的一行数据:

@Data
@NoArgsConstructor
public class User {
    @ExcelProperty(value = "姓名", index = 0)
    private String name;
    @ExcelProperty(value = "年龄", index = 1)
    private Integer age;
    @ExcelProperty(value = "邮箱", index = 2)
    private String email;
}

该实体类使用了Lombok注解@Data、@NoArgsConstructor来自动生成getter、setter和默认构造方法。同时我们使用了EasyExcel的注解@ExcelProperty来标记实体类中的每个属性与Excel中的列的对应关系。value表示Excel中列的名称,index表示该列的索引,从0开始。

  1. 前端页面

在前端页面中,我们需要创建一个表单,允许用户上传Excel文件。可以使用以下的HTML代码:

<form method="post" enctype="multipart/form-data" action="/uploadAndRead">
    <input type="file" name="file">
    <button type="submit">上传并读取</button>
</form>

其中,使用了enctype="multipart/form-data"表示表单内容为二进制数据,同时需要设置method为POST请求。

  1. 后端实现

在后端实现中,我们需要创建一个Controller来处理上传的Excel文件,然后使用EasyExcel库来读取Excel中的数据,并返回给前端页面。

以下是Controller的实现:

@RestController
public class FileUploadController {

    @PostMapping("/uploadAndRead")
    public List<User> uploadAndRead(HttpServletRequest request) {
        String fileName = null;
        try {
            // 1. 获取上传的文件
            MultipartFile file = ((MultipartRequest) request).getFile("file");
            fileName = file.getOriginalFilename();
            
            // 2. 构建Excel读取器
            InputStream inputStream = file.getInputStream();
            List<User> list = new ArrayList<>();
            ExcelReader excelReader = EasyExcel.read(inputStream)
                    .excelType(ExcelTypeEnum.XLSX)
                    .head(User.class)
                    .registerReadListener(new AnalysisEventListener<User>() {
                        @Override
                        public void invoke(User user, AnalysisContext analysisContext) {
                            list.add(user);
                        }

                        @Override
                        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
                        }
                    })
                    .build();
            
            // 3. 读取Excel文件并返回数据
            excelReader.read();
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

在上述代码中,我们通过@RequestParam注解来获取上传的Excel文件,并使用该文件构建Excel读取器。读取器通过head()方法来传入我们定义的实体类,并指定该实体类的属性与Excel列的对应关系。我们还注册了一个AnalysisEventListener来监听读取到的数据,并将累加到list中。最后,Controller将数据返回给前端页面。

  1. 测试

在完成上述步骤之后,我们就可以使用浏览器访问前端页面,并上传Excel文件了。上传完成后,EasyExcel库会自动将Excel文件解析,然后返回数据。我们可以在浏览器上看到读取到的数据。

该例子是一个比较简单的EasyExcel导入Excel的实例,同时也使用了注解来标记实体类中的字段与Excel列的对应关系,希望对你有所帮助

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表