POI导入excel出错

报错:You cannot get a string value from a numeric cell  

  使用POI对excel表数据进行操作时出现了该问题,从数据库导出数据到excel表中,datetime类型的数据以String类型存储,当对表内的该列数据做修改后,excel将自动修改单元格的格式,从而导致在重新读取时出现了以上错误。

     解决办法:

       判断读取的单元格是否为HSSFCell.CELL_TYPE_NUMERIC类型,然后利用cell.getNumericCellValue(),读取该单元格的数据。

    getNumericCellValue()读出的数据类型是double型,

   因此,需要重新进行数据转换:HSSFDateUtil.getJavaDate(d).toLocaleString()。其中d为读出的double类型数据。

 至此,则成功的将excel表内的数据读取出来。

 


单元格的格式总共有以下几种:

HSSFCell.CELL_TYPE_BLANK;
HSSFCell.CELL_TYPE_BOOLEAN;
HSSFCell.CELL_TYPE_ERROR;
HSSFCell.CELL_TYPE_FORMULA;
HSSFCell.CELL_TYPE_NUMERIC;
HSSFCell.CELL_TYPE_STRING;


Cell cell = row.getCell(k);
int cellType = cell.getCellType(); //Getting a null pointer exception when the cell is empty
if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {
	value = cell.getNumericCellValue() + "";
} else {
	value = cell.getStringCellValue();
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值