easypoi导出数值型_解决EasyPoi导出Excel金额数值类型

本文详细介绍了如何使用EasyPoi处理数值类型导出,包括普通数值类型、格式化数值类型以及模板导出数值类型,重点讨论了格式化问题及其解决方案,确保Excel统计功能有效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

实际业务中,业务部门总有各种苛刻的要求,于是就开始了斗智斗勇节奏。。。

X:这数字怎么不是数值类型的?

我:数值和文本有什么区别吗?

X:当然有区别,我们要快速看总和、平均值等等

我:好。。。So Easy!!@Excel 设置type=10,很快就实现了

X:这数值太长了,数不过来,能不能加'逗号'分隔一下

我:So Easy!!于是我加了Format格式化数字。。。

于是,问题就来了,导出的Excel 数字又变成文本,例如:16,888,888 , 没错,它确实是个文本,没毛病,不反驳

整体总结有3种情况:

普通数值类型(不格式化)

格式化数值类型

模板导出数值类型(格式化)

解决方案

一、普通数值类型(不格式化)

只需@Excel 添加type=10即可实现

二、格式化数值类型

思路大致如下:

重新定义CellStyle,继承ExcelExportStylerDefaultImpl,重写方法即可

ExportParams设置样式

@Excel 标识类型

// EXCEL_COVERT_MONEY 是自己定义的标识符

@Excel(name = "测试数值类型", dict = SystemParam.EXCEL_COVERT_MONEY)

public class CustomExcelExportStyler extends ExcelExportStylerDefaultImpl {

private CellStyle numberCellStyle;

public CustomExcelExportStyler(Workbook workbook) {

super(workbook);

createNumberCellStyler();

}

private void createNumberCellStyler() {

numberCellStyle = workbook.createCellStyle();

numberCellStyle.setAlignment(HorizontalAlignment.CENTER);

numberCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

numberCellStyle.setDataFormat((short) BuiltinFormats.getBuiltinFormat("#,##0.00"));

numberCellStyle.setWrapText(true);

}

@Override

public CellStyle getStyles(boolean noneStyler, ExcelExportEntity entity) {

// 判断是否需要格式化

if (entity != null && SystemParam.EXCEL_COVERT_MONEY.equals(entity.getDict())) {

return numberCellStyle;

}

return super.getStyles(noneStyler, entity);

}

}

ExportParams exportParams = new ExportParams("标题", "sheetName");

// 设置样式

exportParams.setStyle(CustomExcelExportStyler.class);

复制代码

经过上面这种方式即可实现 数字被格式化后 Excel还可以是数值类型

终于实现啦!!!是的,贼开心,但是我发现模板导出这种方式失效(~~o(>_

三、模板导出数值类型(格式化)

此时你可能会问:为什么要模板导出呢?默认的不香吗?

没办法,实现不了,用户需要神奇的定制化

这种方式让我折腾了好久,差点就放弃了(~~o(>_

经历:

前期我一直从代码角度去设置样式,但是都无效,若有朋友是通过代码方式实现,欢迎留言告诉我!!

于是,我转换思路,从Excel模板入手

如下图,设置成数值,但是生成的Excel,虽然显示为数值,但实际上它还是文本,Excel统计功能依然是无效

设置成数值

Excel设置成数值 都无效,是不是绝望了?但是直觉告诉我这个突破口是正确的,于是我开始温习我的Excel技能(对不起'办公软件'课程的老师),果然是我的设置方式不正确

如下图,选定单元格,按Ctrl + 1,设置你需要的格式即可

设置Excel单元格格式

终于可以显示求和了

终于搞定了!!!希望本文能帮到大家少掉几根头发!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值