EasyExcel 导入计算公式导出展示字符串问题(SUM)

导出自定义表单 结果遇到 SUM函数 时 没有算出结果,直接展示的函数字符串

处理思路 拦截公式字符串 :

将对应的cell 设置 setCellFormula 字符串公式

然后cell类型设置为 CellType.FORMULA

重新配置 这样就解决了问题。

注意先设置CellFormula 然后设置 CellType (我把顺序搞反了,调试了很久)

3这里用的是evaluateFormulaCell 而不是evaluateInCell

原因evaluateInCell 导出的结果没函数计算式

evaluateFormulaCell 导出结果有函数式

结果如下:

这里顺便给出 一个获取列表行求和转化工具

复制代码
/**
 * @author lj
 * @title: CellCode
 * @projectName cloud
 * @date 2024/8/21 002110:46
 */
public class CellCodeUtil {
    /**
     * 行汇总求和   从1  开始
     * @param startIndex  开始的列表下标    从1  开始
     * @param endIndex  开始的结束列下标   从1  开始
     * @param row  行 从 1 开始
     * @return  =SUM(B5:D5)
     */
    public static String getRowSUN(int startIndex,int endIndex,int row){
        StringBuffer data = new StringBuffer("SUM(");
        data.append(excelColIndexToStr(startIndex) + row + ":");
        data.append(excelColIndexToStr(endIndex) + row + ")");
        return data.toString();
    }

    public static void main(String[] args) {
        System.out.println(getRowSUN(2,26,5));
        System.out.println(getColumnSUN(5,16,2));
    }
    /**
     * 列 汇总 求和  从1  开始
     * @param startIndex
     * @param endIndex
     * @param columnIndex  列表
     * @return
     */
    public static String getColumnSUN(int startIndex,int endIndex, int columnIndex){
        StringBuffer data = new StringBuffer("SUM(");
        data.append(excelColIndexToStr(columnIndex) + startIndex + ":");
        data.append(excelColIndexToStr(columnIndex) + endIndex + ")");
        return data.toString();
    }

    /**
     * 下标转列
     * @param columnIndex  从1 开始
     * @return
     */
    public static String excelColIndexToStr(int columnIndex) {
        if (columnIndex <= 0) {
            return null;
        }
        String columnStr = "";
        columnIndex--;
        do {
            if (columnStr.length() > 0) {
                columnIndex--;
            }
            columnStr = ((char) (columnIndex % 26 + (int) 'A')) + columnStr;
            columnIndex = (int) ((columnIndex - columnIndex % 26) / 26);
        } while (columnIndex > 0);
        return columnStr;
    }
}

测试:

相关推荐
拆房老料9 分钟前
文档预览开源选型对比:BaseMetas FileView 与 KK FileView,谁更适合你的系统?
java·开源·java-rocketmq·开源软件
Frank_refuel10 分钟前
C++之内存管理
java·数据结构·c++
钱多多_qdd18 分钟前
springboot注解(五)
java·spring boot·后端
2501_9418227523 分钟前
面向灰度发布与风险隔离的互联网系统演进策略与多语言工程实践分享方法论记录思考汇总稿件
android·java·人工智能
@小码农27 分钟前
6547网:202512 GESP认证 C++编程 一级真题题库(附答案)
java·c++·算法
秋928 分钟前
idea中使用AI编程助手Cursor详解
java·intellij-idea·ai编程
q行29 分钟前
java学习日志--IO流(使用)
java·学习·io流
vyuvyucd30 分钟前
Linux线程编程:POSIX与C++实战指南
java·开发语言
菜鸟233号41 分钟前
力扣343 整数拆分 java实现
java·数据结构·算法·leetcode
毕设源码-朱学姐1 小时前
【开题答辩全过程】以 日程管理系统为例,包含答辩的问题和答案
java