IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

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

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

前言

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

  • X:这数字怎么不是数值类型的?
  • 我:数值和文本有什么区别吗?
  • X:当然有区别,我们要快速看总和、平均值等等
  • 我:好。。。So Easy!!@Excel 设置type=10,很快就实现了
  • X:这数值太长了,数不过来,能不能加’逗号’分隔一下
  • 我:So Easy!!于是我加了Format格式化数字。。。

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

整体总结有3种情况:

1、 普通数值类型(不格式化)
2、 格式化数值类型
3、 模板导出数值类型(格式化)

解决方案

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

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

二、格式化数值类型

思路大致如下:

1、 重新定义CellStyle,继承ExcelExportStylerDefaultImpl,重写方法即可
2、 ExportParams设置样式
3、 @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 )

三、模板导出数值类型(格式化)
  • 此时你可能会问:为什么要模板导出呢?默认的不香吗?
  • 没办法,实现不了,用户需要神奇的定制化

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

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

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

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

69_1.png 设置成数值

Excel设置成数值 都无效,是不是绝望了?但是直觉告诉我这个突破口是正确的,于是我开始温习我的Excel技能(对不起’办公软件’课程的老师),果然是我的设置方式不正确
如下图,选定单元格,按Ctrl + 1,设置你需要的格式即可

69_2.png 设置Excel单元格格式

终于可以显示求和了

69_3.png

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

文章永久链接:https://tech.souyunku.com/?p=41874

赞(86) 打赏



未经允许不得转载:搜云库技术团队 » 解决EasyPoi导出Excel金额数值类型

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367