当前位置: 首页 > news >正文

POI处理excel,根据XLOOKUP发现部分公式格式不支持问题

poi4不支持XLOOKUP函数,但poi最新的5.2.3却已经对此函数做了支持

poi下载地址:Index of /dist/poi/release/bin

公式源码位置:org/apache/poi/ss/formula/atp/XLookupFunction.java

但是在使用此函数过程中,发现有些XLOOKUP函数会计算不出结果,导致返回#VALUE!,跟踪源码分析后,发现其实是有一种特殊的excel公式写法,poi本身没有做支持

拿XLOOKUP函数举例:

此函数第二和第三个参数是数组类型,也就是说可以传入整列单元格作为参数,比如:

XLOOKUP("张三",Sheet1!A:A,Sheet1!Z:Z,"",0,1)

从A列全部寻找值为张三的,找到后返回对应的Z列区域值

如果sheet1中,我想将A列和B列拼接作为一整个列进行查询,excel公式可以这么写

XLOOKUP("张三",Sheet1!A:A&Sheet1!B:B,Sheet1!Z:Z,"",0,1)

&符号将两列公式拼接组合成一列

但是poi解析一个函数的参数时,这种多列合并为一列作为参数的场景并没有特殊处理,所以解析到&符号就会被识别为字符拼接,从而导致Sheet1!A:A和Sheet1!B:B会被识别为两个单元格值,然后进行拼接,此时就会导致XLOOKUP计算失效。

不仅限于这一个函数,只要用到这种拼接公式作为参数的场景,都会存在这个bug,但由于poi一直没有对此进行支持,目前比较好的方式是调整公式,避免这种用法,可以将两列合并为一列,再用公式引用合并列。

http://www.lryc.cn/news/123245.html

相关文章:

  • 第一次PR经历
  • 背上小书包准备面试之TypeScript篇
  • 【Spring】浅谈spring为什么推荐使用构造器注入
  • 在阿里云Linux服务器上部署MySQL数据库流程
  • 实战——OPenPose讲解及代码实现
  • 专注于创意设计,为您的小程序和网站建设带来更多的可能性
  • ATF(TF-A)安全通告 TFV-6 (CVE-2017-5753, CVE-2017-5715, CVE-2017-5754)
  • vue3 基础语法 02
  • 版本控制工具——git
  • 超详细,自动化测试实战-获取配置文件信息(实例源码)
  • spring 2.7.14 cors 设置 allowedOrigins(“*“)通配符 失效怎么解决
  • 一、Go的前景与优势、基础语法
  • shell脚本循环语句
  • 二叉树题目:二叉树的直径
  • 嵌入式:C高级 Day4
  • cmake常用命令(1)——函数相关
  • 阿里三年功能测试的一些感悟
  • React源码解析18(4)------ completeWork的工作流程【mount】
  • Kafka: 详解、使用教程和示例
  • 【LeetCode周赛】LeetCode第358场周赛
  • Node.js学习笔记-04
  • 基于dbn+svr的交通流量预测,dbn详细原理
  • 【第一阶段】kotlin中反引号中的函数名特点
  • 数据分析-python学习 (1)numpy相关
  • 数据库的游标
  • 【设计模式】前端控制器模式
  • SQL | 过滤数据
  • 【力扣每日一题】2023.8.13 合并两个有序数组
  • 数据结构篇七:排序
  • Vue组件的边界情况