在java中获取excel的cell值的时候报错

在获取cell的时候,通常会有报错类型不匹配的问题,这是因为你的cell中存储的数据类型和使用的方法不匹配的原因,假如说cell中存储了一个数字,但是使用的cell.getStringCellValue()获取值,就会有如下错误

java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell

at org.apache.poi.xssf.usermodel.XSSFCell.typeMismatch(XSSFCell.java:946)

at org.apache.poi.xssf.usermodel.XSSFCell.getRichStringCellValue(XSSFCell.java:336)

at org.apache.poi.xssf.usermodel.XSSFCell.getStringCellValue(XSSFCell.java:280)

at com.example.test.TestApplicationTests.testIsEmpty(TestApplicationTests.java:68)

at com.example.test.TestApplicationTests.branch(TestApplicationTests.java:44)

at com.example.test.TestApplicationTests.main(TestApplicationTests.java:35)

这种错误的处理方式很简单,之前有一种方式,是可以解决这个问题的,但是这个方法已经被弃用了,所以找了一下现行可用的方法

java 复制代码
cell.setCellType(CellType.STRING);
cell.getStringCellValue();

这个是从其他地方找到解决方式,可以参考一下

java 复制代码
//使用的是这个包下的
import org.apache.poi.ss.usermodel.*;

//格式化cell,就可以获取cell的值
DataFormatter formatter = new DataFormatter();
String stringCellValue = formatter.formatCellValue(cell);

这个方式看了一下源码,大概是这么个意思哈,此处对cell做了空判断,第二个从字面意思来看,应该是判断是否是公式数据(是否引用函数),如果此处不准确的话,有了解的大佬给我回消息哈,我及时纠正

再接下来对型号进行分支匹配,对于各种类型,进行响应的值的返回,此处涉及到一个cell.getRichStringCellValue()方法,也是用来获取cell的值,但是与getStringCellValue不同的是,这个方法功能更加丰富,比如文字的样式,颜色等等

相关推荐
Pin_Qing4 分钟前
缓存能活多久,现在是个要算的参数
java·大数据·开发语言·人工智能·程序人生
小道士写程序5 分钟前
Rust 元组详解:复合类型的基础
开发语言·rust
jyOverQ8 分钟前
从零开始学 RocketMQ(四):集群部署、消息存储与高可用【保姆级教程】
java·rocketmq·java-rocketmq
小裕哥略帅14 分钟前
行级数据权限控制@DataPermission
java·开发语言
ZoeLandia20 分钟前
React05:useEffect 与副作用
开发语言·前端·react.js·typescript
ManageEngineITSM21 分钟前
ITSM系统如何与企业微信、钉钉、飞书集成?提升工单处理效率的方法
java·大数据·开发语言·钉钉·企业微信·变更管理
ms365copilot24 分钟前
我不再自己做 Word、Excel 和 PPT 了,我让 Copilot 直接帮我创建 (1)
word·powerpoint·excel·copilot
Akamai中国25 分钟前
PHP 爆出两大高风险漏洞!Akamai 即时部署防护机制
开发语言·人工智能·云计算·云服务
学逆向的26 分钟前
C 悬空指针
c语言·开发语言·网络安全
weixin_4173968336 分钟前
酒店弱电怎么验收?四个阶段与逐项检查清单
开发语言·前端·php·综合布线·弱电