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

相关推荐
浪裡遊4 分钟前
我的uniapp自定义模板
开发语言·前端·uni-app·个人开发
weixin_307779138 分钟前
Linux下用Bash Shell脚本和mysql命令行程序实现带多组参数和标签的MySQL数据库批量数据导出程序
linux·开发语言·数据库·mysql·bash
J不知道ava9 分钟前
在idea里开发第一个Servlet
java·ide·intellij-idea
程序员yt19 分钟前
双一流软件工程大二听闻 Java 前景堪忧,是否该转C++或人工智能或者读研?
java·c++·人工智能
Xwaiy1 小时前
设计模式七大原则详解(小白也能懂)
java·设计模式
pink大呲花1 小时前
JavaScript 实现导出内容自动居中:从原理到实践
开发语言·javascript·ecmascript
梅见十柒1 小时前
C++程序设计语言笔记——抽象机制:实例化
开发语言·c++·经验分享·笔记
才华是浅浅的耐心1 小时前
使用 Python 爬取 TikTok 评论的实现与解析
开发语言·python
Java中文社群1 小时前
面试官:谈谈你对Reactor模型的理解?
java·后端·面试
液态不合群1 小时前
maven为什么发生依赖冲突?怎么解决依赖冲突?
java·maven