easypoi导出excel,列要求是数字导出是文本的问题~并分析源码

734 阅读2分钟

📚简介:

       由于使用了easypoi导出的excel列需要是数字的但是导出的默认是文本类型,这样选择列就无法进行统计求和,由于没有认真看注解导致我跑去分析源码。所以才有了这批文章。

在这里插入图片描述

这样选择列就无法进行统计

在这里插入图片描述

实体类

实体类中定义的 @Excel值如下

在这里插入图片描述 我们可以看注解Excel中定义的字段类型表示啥意思 在这里插入图片描述         比较搞笑的是,有时候认真一点看源码注释都不需要自己debug进断点里面分析源代码

分析源码

在源码中主要关注该方法 在这里插入图片描述

getAllExcelField方法里面会把我们实体类中定义的属性设置到excel对象中。 在这里插入图片描述

createSheetForMap方法内容就是负责组装数据

在这里插入图片描述 insertDataToSheet方法中调用createCells方法把传入的数据进行遍历其中t对象就是取出来的需要插入的数据 在这里插入图片描述

createCells方法中就决定了单元格插入的数据是什么类型的

在这里插入图片描述         那这样就可以设置插入的字段类型是数字了.如果是数字还有其他要求格式呢,比如说保留小数点后2位呢?

getCellValue方法

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述         那怎么设置格式化的类型呢?看源码可以看到转换的过程是使用DecimalFormat进行转化,哪怕你不会用这个类百度一下也知道这个该如何设置数字的转换需求 在这里插入图片描述         到这来源码分享就结束了,当然分享源码没有那么容易我是吧比较重要的点拿出来说,还有很多方法没有去细讲,学着分享源码,我也是百度了很久也没有找到我需要的帖子迫于无奈只能分享源码,在有就是看注释非常重要,如果我当时看来注释就不需要痛苦的分享源码了。

numFormat设置数字转换类型

在这里插入图片描述

type:设置单元格是数字类型的那就type设置10

在这里插入图片描述

由此可知

把原来的注解修改 在这里插入图片描述 修改实体类中的参数如下就可以完成文本转换数字类型

在这里插入图片描述

效果

在这里插入图片描述 在这里插入图片描述     这样数字类型的就可以求和了,也可以看出如果是文本类型的参数值是null插入数据会变成空,而数字类型的null会转换成0