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

news2025/1/11 16:44:46

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.coloradmin.cn/o/877982.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Java+SpringBoot+Vue前后端分离仓库管理系统详细设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

JSON字符串转换

大家好 , 我是苏麟 , 今天带来一个JSON序列化库 Gson . GitHub 地址 : GitHub - google/gson: A Java serialization/deserialization library to convert Java Objects into JSON and back java 中 json 序列化库有很多: gson (谷歌的) fastjson (阿里的) jack…

numba 入门示例

一维向量求和: C A B 在有nv 近几年gpu的ubuntu 机器上, 环境预备: conda create -name numba_cuda_python3.10 python3.10 conda activate numba_cuda_python3.10conda install numba conda install cudatoolkit conda install -c nvi…

Java多线程编程中的线程控制:挂起、停止和恢复

Java 线程控制:挂起、停止和恢复 在多线程编程中,对线程进行控制是非常重要的,可以通过挂起、停止和恢复线程来实现对线程的管理。本文将介绍如何使用Java提供的方法对线程进行挂起、停止和恢复操作,以及需要注意的安全性和替代方…

最强自动化测试框架Playwright (27)-跟踪查看器

Playwright Trace Viewer 是一个 GUI 工具,可帮助您在脚本运行后探索记录的 Playwright 跟踪。可以本地打开,也可以在trace.playwright.dev.打开, 录制跟踪文件 使用context.tracing.start进行录制,使用stop方法保存录制文件 b…

【mysql算法】在数据库中储存树形结构

【mysql&算法】在数据库中储存树形结构 【一】常见的使用树的场景【二】方式一:邻接表(1)方法介绍(2)优点(3)缺点(4)实现案例:生成菜单树结构 【三】方式…

盒子阴影效果与环绕阴影

box-shadow 在前端样式里面,最常见的一中效果之一就是阴影,好的阴影可以瞬间给人一种高端的用户体验,今天简单总结下这个样式的语法与使用方法。 语法 box-shadow的语法其实是比较简单好记的,我们按照最全面的写法来看 x轴偏移…

社区团购商城拼团秒杀接龙分销团长小程序开源版开发

社区团购商城拼团秒杀接龙分销团长小程序开源版开发 功能介绍: 商品管理:增加商品-商品列表-商品分类-商品单/多规格-商品标签 订单管理:订单列表-订单挑选-订单导出-订单打印-批量发货-商品评价 会员管理:会员列表-会员挑选-会员…

1. 基于UDP的TFTP文件传输上传下载完整版本

1)tftp协议概述 简单文件传输协议,适用于在网络上进行文件传输的一套标准协议,使用UDP传输 特点: 是应用层协议 基于UDP协议实现 数据传输模式 octet:二进制模式(常用) mail:…

jenkins 安装nodejs 14

参考: jenkins容器安装nodejs-前端问答-PHP中文网

微服务08-多级缓存

1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: •请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 •Redis缓存失效时,会对数据库产生冲击 多级缓存就是充分利用请求处理的每个环节,分…

VB6查表法编解Modbus RTU协议CRC16校验码

Modbus RTU协议CRC16编解码用VB6写起来比较啰嗦,需要做一些简单处理。下面就查表法,贴上源代码,并做一些简要说明。 源程序,对照上面的图看更方便。 Private Sub Command2_Click() Dim I As Integer, J As Integer Dim CRCHi As …

部署lawyer-llama

Git - Downloading PackageGit - Downloading PackageGit - Downloading Package 下载git,wget需要下载一下 (GNU Wget 1.21.4 for Windows), Windows中git bash完全可以替代原生的cmd,但是对于git bash会有一些Linu…

HTTP之cookie基础学习

目录 Cookie 什么是Cookie Cookie分类 Cookie版本 Cookie工作原理 Cookie详解 创建cookie cookie编码 cookie过期时间选项 Cookie流程 Cookie使用 会话管理 个性化信息 记录用户的行为 Cookie属性 domain选项 path选项 secure选项 cookie…

【日常积累】RPM包依赖下载及私有yum仓库搭建

概述 某些时候,我们需要下载某个RPM包依赖的依赖。如某些内网环境,就需要自行准备rpm包。可以通过能上互联网的服务器进行相应的rpm包下载,然后在拷贝到相应的服务器安装,或者搭建自己的内容rpm包仓库。 查看*.rpm 包依赖&#…

修改el-tooltip组件的背景色

修改el-tooltip组件的背景色 // 提示气泡的背景色 .el-tooltip__popper{background-color: pink !important; } .popper__arrow {border-top-color: pink !important; } .popper__arrow:after {border-top-color: pink !important; }

基于通达信量化接口会实现自动交易吗?(股票自动下单接口)

通常情况下,在开发股票交易接口时,会包含多个接口功能的研发,因此通达信量化接口可以实现自动化交易。即通过通达信的API接口(股票自动下单接口),可以实现与交易所的连接和交互,包括下单、撤单、…

Vue3 引用第三方Swiper内容触摸滑动简单应用

去官网查看更多教程→:Swiper官网 → 点击教程在vue中使用Swiper→ 在Vue中使用Swiper cd 到项目 安装Swiper: cnpm install --save swiper 安装指定版本 cnpm install --save swiper8.1.6 9.4.1 10.1.0…

【CI/CD】Rancher K8s

Rancher & K8s Rancher 和 K8s 的关系是什么?K8s 全称为 Kubernetes,它是一个开源的,用于管理云平台中多个主机上的容器化的应用。而 Rancher 是一个完全开源的企业级多集群 Kubernetes 管理平台,实现了 Kubernetes 集群在混合…

OpenCV图像处理——边缘检测

目录 原理Sobel检测算子方法应用 Laplacian算子Canny边缘检测原理 原理 Sobel检测算子 方法 应用 sobel_x_or_ycv.Sobel(src,ddepth,dx,dy,dst,ksize,scale,delta,borderType)import numpy as np import cv2 as cv import matplotlib.pyplot as pltimgcv.imread(./汪学长的随堂…