利用hutool解析excel内容转换为实体,实体属性为空

一、博客前提

工作中有遇到一个需求,客户提供需要插入数据库的原始数据的excel表格,我去解析表格,将数据插入数据库。当时立马就想到了用hutool的工具类,直接将excel表格内容的转换为我需要的实体对象。网上也有写了很多这种类似的博客,可是我在参考网上博客内容去做,利用hutool解析excel内容转换为实体,但是遇到实体属性为空的问题,本篇博客就作为一个工作笔记记录一下。

二、代码实现

1.引入pom

<dependency>
     <groupId>cn.hutool</groupId>
     <artifactId>hutool-all</artifactId>
     <version>5.5.8</version>
</dependency>
<dependency>
     <groupId>org.apache.poi</groupId>
     <artifactId>poi-ooxml</artifactId>
      <version>3.1.7</version>
</dependency>

2、定义excel转换后实体

@Data
public class GoodFavorOfExcel {

    /**
     * 宝贝id
     */
    private Long id;

    /**
     * 总收藏量
     */
    private Integer totalFavor;

    /**
     * 时间
     */
    private String date;

}

3、解析代码

    @PostMapping(value = "getData")
    public Resp indexConvert(@RequestParam("file") MultipartFile file) throws IOException {

        ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
        reader.addHeaderAlias("日期", "date");
        reader.addHeaderAlias("宝贝ID", "id");
        reader.addHeaderAlias("收藏数", "totalFavor");
        List<GoodFavorOfExcel> list =  reader.readAll(GoodFavorOfExcel.class);

        return RespUtil.success();
    }

4、excel表格格式

5、结果展示

到这里展示的内容,就已经将excel里的转换为我需要的实体对象list了

三、问题复现即解决

2、

下面来展示下,我参照网上的博客写代码时遇到的问题

通过和上面的图片对比,我们就可以发现在转换数据的时候,虽然数据大小也是和前面的一样有5126条,但是里面的实体内容确实null,原因是因为

        ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
        List<GoodFavorOfExcel> list =  reader.readAll(GoodFavorOfExcel.class);

没有对ExcelReader对象增加标题别名,导致hutool工具类底层解析时,无法得知那一列的内容是对应实体里的哪一个属性。这也是网上大多数博客没有讲到的地方。hutoll的api也没有讲到这一点:https://www.hutool.cn/docs/#/poi/Excel%E8%AF%BB%E5%8F%96-ExcelReader

2、解决方法

        ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
        reader.addHeaderAlias("日期", "date");
        reader.addHeaderAlias("宝贝ID", "id");
        reader.addHeaderAlias("收藏数", "totalFavor");

解决的方法就是设置标题和别名的对应关系

四、总结

本篇博客仅仅是一个很简单的使用笔记,想要详细了解为什么设置了标题,别名对应关系就可展示数据的读者,可自行查看源码了解原理。

  • 5
    点赞
  • 16
    收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 8

打赏作者

bird_tp

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值