找回密码
 立即注册

QQ登录

只需一步,快速开始

hqz

注册会员

4

主题

10

帖子

30

积分

注册会员

积分
30
  • 85

    金币

  • 4

    主题

  • 10

    帖子

hqz
注册会员   /  发表于:2022-9-13 17:21  /   查看:1278  /  回复:5
10金币
GCExcel解析excel文件中的公式 ,无法解析SUM(C1:C6)这种类型的公式,但是SUM(C1,C6)是可以解析的
请问大佬,如何才能支持SUM(C1:C6)这种类型的公式解析?

最佳答案

查看完整内容

这个是正常现象,你在excel里面分别试一下,SUM(C1,C6)和SUM(C1:C6),这是相当于两个不一样的公式。前者将C1和C6进行求和,后者是将C1、C2、C3、C4、C5、C6进行求和,所以前者获得的是C1、C6,后者获取的是C1到C6的这样一个range,没毛病。

5 个回复

倒序浏览
最佳答案
最佳答案
有点东西悬赏达人认证
初级会员   /  发表于:2022-9-13 17:21:30
来自 5#
本帖最后由 有点东西 于 2022-9-14 18:31 编辑
hqz 发表于 2022-9-14 11:45
“有点东西”大佬发的这个样例是写文件的时候设置单元格公式,我这边的场景是读文件的时候获取单元格公式 ...

这个是正常现象,你在excel里面分别试一下,SUM(C1,C6)和SUM(C1:C6),这是相当于两个不一样的公式。前者将C1和C6进行求和,后者是将C1、C2、C3、C4、C5、C6进行求和,所以前者获得的是C1、C6,后者获取的是C1到C6的这样一个range,没毛病。
回复 使用道具 举报
有点东西悬赏达人认证
初级会员   /  发表于:2022-9-13 18:12:01
2#
上面描述的解析具体是怎么样的操作呢?我这边按照理解测试了设置这样的公式是正常的,可以把你的demo或者复现步骤上传。 image.png401552733.png
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-9-13 18:31:35
3#
可以参考楼上的测试结果,如果有问题还是上传一个demo或者说明复现步骤
回复 使用道具 举报
hqz
注册会员   /  发表于:2022-9-14 11:45:51
4#
Richard.Ma 发表于 2022-9-13 18:31
可以参考楼上的测试结果,如果有问题还是上传一个demo或者说明复现步骤

“有点东西”大佬发的这个样例是写文件的时候设置单元格公式,我这边的场景是读文件的时候获取单元格公式:
【背景】:java代码解析上传的excel文件时,要记录每个单元格设置的公式信息。
【demo】
// 根据行列号定位到单元格,调用getFormula方法获取单元格设置的公式,
String formula = formsheet.getRange(rnum, cnum).getFormula();

// 使用FormulaSyntaxTree获取语法树
FormulaSyntaxTree syntaxTree = FormulaSyntaxTree.Parse(formula);
List<SyntaxNode> childs = syntaxTree.getRoot().getChildren();

// 遍历语法树
for (int idx = 0; idx < childs.size(); idx++) {
    SyntaxNode node = childs.get(idx);
    List<SyntaxNode> chilrenList = node.getChildren();
    if (CollectionUtils.isEmpty(chilrenList)) {
            // 获取语法树中的值,到了这里,如果公式是SUM(C1,C6),语法树里是可以获得C1、C6这样解析过后的结果,但如果是SUM(C1:C6),解析出来的仍然是C1:C6,不是C1、C6
            String nodeStr = node.toString()
    }
}
【问题描述】
如果公式是SUM(C1,C6),语法树里是可以获得C1、C6这样解析过后的结果,但如果是SUM(C1:C6),解析出来的仍然是C1:C6,不是C1、C6
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-9-14 18:24:54
6#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部