随笔 - 754  文章 - 0 评论 - 33 阅读 - 135万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

报错如下:

Exception in thread "main" java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell
 at org.apache.poi.xssf.usermodel.XSSFCell.typeMismatch(XSSFCell.java:1050)
 at org.apache.poi.xssf.usermodel.XSSFCell.getRichStringCellValue(XSSFCell.java:404)
 at org.apache.poi.xssf.usermodel.XSSFCell.getRichStringCellValue(XSSFCell.java:70)
 at com.jawasoft.testDemo.ExcelUtil.readExcel(ExcelUtil.java:81)
 at com.jawasoft.testDemo.ExcelUtil.readExcelToObj(ExcelUtil.java:46)
 at com.jawasoft.testDemo.ExcelUtil.main(ExcelUtil.java:29)

报错原因:在读取cell单元格字符串时,有number类型的数据,因此需要把它转化为纯String类型,这样就不会报错了。

报错的代码:

returnStr = cell.getRichStringCellValue().getString();

或者如下代码

//获取单元格数据
String cellValue = cell.getStringCellValue();

解决办法:在读取excel单元格数据转化之前设置单元格类型为String

代码如下:

//设置单元格类型
cell.setCellType(CellType.STRING);
returnStr = cell.getRichStringCellValue().getString();

或者

在读取单元格数据之前,可以先检查该单元格的数据类型。如果它是数字类型,那么你应该读取它的数值值;如果它是文本类型,那么你应该读取它的字符串值。这样可以避免数据类型不匹配的问题。

复制代码
                    Double deliverCarCount = null;
                    Cell cell8 = row.getCell(8);
                    if(null != cell8){
                        if(cell8.getCellType() == CellType.NUMERIC.getCode()){
                            deliverCarCount = cell8.getNumericCellValue();// 处理数字值
                        } else if(cell8.getCellType() == CellType.STRING.getCode()){
                            deliverCarCount = Double.valueOf(cell8.getStringCellValue());
                        }
                    }
复制代码

读取日期格式

复制代码

DataFormatter dataFormatter = new DataFormatter(Locale.US);
if (cell0.getCellType() == CellType.NUMERIC.getCode()) {
  if (DateUtil.isCellDateFormatted(cell0)) {
    deliverDate = dataFormatter.formatCellValue(cell0);
  } else {
    deliverDate = cell0.getStringCellValue();
  }
}
复制代码

 



感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接
posted on   周文豪  阅读(1058)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2021-05-30 Oracle视图
点击右上角即可分享
微信分享提示