在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不同的是,这个方法功能更加丰富,比如文字的样式,颜色等等

相关推荐
草履虫建模3 小时前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
naruto_lnq5 小时前
分布式系统安全通信
开发语言·c++·算法
qq_297574675 小时前
【实战教程】SpringBoot 实现多文件批量下载并打包为 ZIP 压缩包
java·spring boot·后端
老毛肚5 小时前
MyBatis插件原理及Spring集成
java·spring·mybatis
学嵌入式的小杨同学5 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
lang201509286 小时前
JSR-340 :高性能Web开发新标准
java·前端·servlet
Re.不晚6 小时前
Java入门17——异常
java·开发语言
缘空如是6 小时前
基础工具包之JSON 工厂类
java·json·json切换
精彩极了吧6 小时前
C语言基本语法-自定义类型:结构体&联合体&枚举
c语言·开发语言·枚举·结构体·内存对齐·位段·联合
追逐梦想的张小年6 小时前
JUC编程04
java·idea