0
点赞
收藏
分享

微信扫一扫

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


📃目录跳转

  • ​​📚简介:​​
  • ​​实体类​​
  • ​​分析源码​​
  • ​​效果​​

📚简介:

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

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

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

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

实体类

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

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


我们可以看注解Excel中定义的字段类型表示啥意思

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


        比较搞笑的是,有时候认真一点看源码注释都不需要自己debug进断点里面分析源代码

分析源码

在源码中主要关注该方法

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

​getAllExcelField方法​​里面会把我们实体类中定义的属性设置到excel对象中。

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

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

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


​insertDataToSheet方法​​​中调用createCells方法把传入的数据进行遍历其中​​t​​对象就是取出来的需要插入的数据

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

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

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


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

getCellValue方法

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


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


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


        那怎么设置格式化的类型呢?看源码可以看到转换的过程是使用​​DecimalFormat​​进行转化,哪怕你不会用这个类百度一下也知道这个该如何设置数字的转换需求

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


        到这来源码分享就结束了,当然分享源码没有那么容易我是吧比较重要的点拿出来说,还有很多方法没有去细讲,学着分享源码,我也是百度了很久也没有找到我需要的帖子迫于无奈只能分享源码,在有就是看注释非常重要,如果我当时看来注释就不需要痛苦的分享源码了。

numFormat设置数字转换类型

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

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

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

由此可知

把原来的注解修改

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


修改实体类中的参数如下就可以完成文本转换数字类型

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

效果

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


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


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


举报

相关推荐

0 条评论