网站提交入口百度,搭建网站 开源软件,wordpress 附件太小,网站建设教程公司poi4不支持XLOOKUP函数#xff0c;但poi最新的5.2.3却已经对此函数做了支持 poi下载地址#xff1a;Index of /dist/poi/release/bin 公式源码位置#xff1a;org/apache/poi/ss/formula/atp/XLookupFunction.java 但是在使用此函数过程中#xff0c;发现有些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:ASheet1!B:B,Sheet1!Z:Z,,0,1)
用符号将两列公式拼接组合成一列
但是poi解析一个函数的参数时这种多列合并为一列作为参数的场景并没有特殊处理所以解析到符号就会被识别为字符拼接从而导致Sheet1!A:A和Sheet1!B:B会被识别为两个单元格值然后进行拼接此时就会导致XLOOKUP计算失效。
不仅限于这一个函数只要用到这种拼接公式作为参数的场景都会存在这个bug但由于poi一直没有对此进行支持目前比较好的方式是调整公式避免这种用法可以将两列合并为一列再用公式引用合并列。