EasyExcel 学习之 导出 “类型及精度问题”

目录

现象

Excel 导出时,可能面临几个问题:

  • 类型问题:常见类型转换、URL 转图片等
  • 精度/格式问题:数字、日期转换

缘由

类型问题

Excel 常见的 API 有两种,Easy Excel 使用的是 Apache POI 。Excel 定义的单元格数据类型远远没有 Java 等语言的数据类型多,且数据导出时呈现方式可能与源数据不一致。故而,导出中存在数据类型转换。

精度/格式问题

精度问题

  • 保留几位小数、具体保留规则
  • 科学计数法:通过 Converter 转成 String 输出

格式问题

  • 日期

解决

  • 数字:@NumberFormat("#.##%")LocalDateStringConverter.class
  • 日期:@DateTimeFormat("yyyy年MM月dd日HH时mm分ss秒")
java 复制代码
package com.zxguan.monolithtemplate.common.service;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.format.NumberFormat;
import com.alibaba.excel.converters.localdate.LocalDateStringConverter;
import lombok.AllArgsConstructor;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;

@AllArgsConstructor
@Data
public class TestRespDTO {

    @ExcelProperty(value = "姓名", index = 1)
    private String name;

    @ExcelProperty(value = "年龄", index = 2)
    private Integer age;

    @DateTimeFormat("yyyy-MM-dd")
    @ExcelProperty(value = "出生年月日", index = 3, converter = LocalDateStringConverter.class)
    private LocalDate birthDt;

    @NumberFormat("#.##")
    @ExcelProperty(value = "资产", index = 4)
    private BigDecimal assets;

}
相关推荐
艾莉丝努力练剑36 分钟前
【C语言16天强化训练】从基础入门到进阶:Day 11
c语言·学习·算法
像素之间1 小时前
nginx的诞生背景、核心优势、与 Apache 的对比
运维·学习·nginx
幸运狗头3 小时前
Linux学习-TCP并发服务器构建
linux·服务器·学习
The_Second_Coming4 小时前
最小化 CentOS 模板虚拟机安装与配置
linux·运维·服务器·学习·centos·云计算
霖霖7144 小时前
HTML5入门学习
前端·学习·html
wanzhong23335 小时前
ArcGIS学习-12 实战-综合案例
学习·arcgis
diablobaal6 小时前
云计算学习100天-第32天
学习·云计算
练习时长两年半的Java练习生(升级中)8 小时前
从0开始学习Java+AI知识点总结-27.web实战(Maven高级)
java·学习·maven
艾莉丝努力练剑8 小时前
【C语言16天强化训练】从基础入门到进阶:Day 14
java·c语言·学习·算法
牛奶咖啡139 小时前
学习设计模式《二十四》——访问者模式
学习·设计模式·访问者模式·认识访问者模式·访问者模式的优缺点·何时选用访问者模式·访问者模式的使用示例