jar包--POI.jar包使用问题汇总

本文介绍使用POI处理Excel时遇到的类型不匹配问题及解决方案,包括如何转换不同类型的单元格值为字符串,并解决了因文件头签名不一致导致的Invalid headersignature错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用POI低版本的jar包,导入excel时类型不匹配报错,优化方式

使用场景:如题,在导入报表时,导入cell类型错误,一般常见是'字符串'和'数字类型'的问题

原因:cell中的类型无法判断,单独使用getStringvalue或者getNumericValue会报错

解决方法:所以添加以下代码,然后调用cellToString(HSSFRow row,int r)方法即可,无论是数字型、字符串型、布尔型、最后返回的都是字符串型,可直接存到数据库中使用:

 1 public String cellToString(HSSFRow row,int r){
 2     String dates = new String();
 3     HSSFCell cell = row.getCell((short)r);
 4     if(null!=cell){
 5         switch(cell.getCellType()){
 6             case HSSFCell.CELL_TYPE_NUMERIC:
 7                 dates = String.valueOf(((long)cell.getNumericCellValue())).trim();//数字类型
 8                 System.out.println("NUMERIC="+dates);
 9                 break;
10             case HSSFCell.CELL_TYPE_STRING:
11                 dates = cell.getStringCellValue().trim();//字符串类型
12                 System.out.println("STRING="+dates);
13                 break;
14             case HSSFCell.CELL_TYPE_BOOLEAN:
15                 dates = String.valueOf(cell.getBooleanCellValue()).trim();//布尔类型
16                 break;
17             default:
18                 System.out.print("表中有除数字、字符串、布尔之外的类型   ");
19                 break;
20         }
21 
22     }
23     return dates;
24 }

poi报错:Invalid header signature

产生场景:这个问题是在使用poi导入excel文件时产生的:

问题原因:excel是从网页下载或者其他第三方软件导出的,所以它的后缀名虽然是xsl,但是它文件头签名仍然是原来的格式,所以poi不能识别,所以pio不能读取它

解决方法:使用excel打开,另存为2003版的excel,再导入就好了。

 

转载于:https://www.cnblogs.com/silence-fire/p/6397348.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值