easypoi导出数值型_解决EasyPoi导出Excel⾦额数值类型前⾔
实际业务中,业务部门总有各种苛刻的要求,于是就开始了⽃智⽃勇节奏。。。
X:这数字怎么不是数值类型的?
我:数值和⽂本有什么区别吗?
X:当然有区别,我们要快速看总和、平均值等等
我:好。。。So Easy!!@Excel 设置type=10,很快就实现了
X:这数值太长了,数不过来,能不能加'逗号'分隔⼀下
我:So Easy!!于是我加了Format格式化数字。。。
于是,问题就来了,导出的Excel 数字⼜变成⽂本,例如:16,888,888 , 没错,它确实是个⽂本,没⽑病,不反驳
整体总结有3种情况:
sowhat
普通数值类型(不格式化)
格式化数值类型
模板导出数值类型(格式化)
小学一年级英语mp3
解决⽅案
⼀、普通数值类型(不格式化)
只需@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 = ateCellStyle();
numberCellStyle.tAlignment(HorizontalAlignment.CENTER);
numberCellStyle.tVerticalAlignment(VerticalAlignment.CENTER);
numberCellStyle.tDataFormat((short) BuiltinFormat("#,##0.00"));
numberCellStyle.tWrapText(true);
}
@Override
public CellStyle getStyles(boolean noneStyler, ExcelExportEntity entity) {
// 判断是否需要格式化
if (entity != null && SystemParam.EXCEL_COVERT_MONEY.Dict())) {
return numberCellStyle;
head teacher}
快速祛斑Styles(noneStyler, entity);
standby}
}
ExportParams exportParams = new ExportParams("标题", "sheetName");
// 设置样式
exportParams.tStyle(CustomExcelExportStyler.class);
复制代码
经过上⾯这种⽅式即可实现 数字被格式化后 Excel还可以是数值类型
终于实现啦是的,贼开⼼,但是我发现模板导出这种⽅式失效(~~o(>_
三、模板导出数值类型(格式化)
此时你可能会问:为什么要模板导出呢?默认的不⾹吗?
没办法,实现不了,⽤户需要神奇的定制化
najie这种⽅式让我折腾了好久,差点就放弃了(~~o(>_
经历:
前期我⼀直从代码⾓度去设置样式,但是都⽆效,若有朋友是通过代码⽅式实现,欢迎留⾔告诉我!!
于是,我转换思路,从Excel模板⼊⼿
如下图,设置成数值,但是⽣成的Excel,虽然显⽰为数值,但实际上它还是⽂本,Excel统计功能依然是⽆效
设置成数值
comprehensionppaExcel设置成数值 都⽆效,是不是绝望了?但是直觉告诉我这个突破⼝是正确的,于是我开始温习我的Excel技能(对不起'办公软件'课程的⽼师),果然是我的设置⽅式不正确
如下图,选定单元格,按Ctrl + 1,设置你需要的格式即可
cnn china
设置Excel单元格格式
终于可以显⽰求和了
gain是什么意思
终于搞定了希望本⽂能帮到⼤家少掉⼏根头发!