今天遇见一个问题,就是导入的时候发现,excel 传过来电话号码是int类型的数字,
//Cannot get a text value from a numeric cell 这个问题
我当时立马想到数字转字符还不简单就是加" "就可以了 代码如下
Cell cell = row.getCell(4);//这个是下标第几个数
int cellType = cell.getCellType();
if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {
taxReceiptDetails.setPhoneNumber(cell.getNumericCellValue()+" ");//TaxReceiptDetails taxReceiptDetails = new TaxReceiptDetails(); 换成你的实体类
} else {
taxReceiptDetails.setPhoneNumber(cell.getStringCellValue());
}
这个时候就会发现另一个问题 cell.getNumericCellValue()就是超过了10位是科学计数法如: 1.8790281212E10
然后我们是不是就会想到强转,是的我就是强转 taxReceiptDetails.setPhoneNumber((long)cell.getNumericCellValue()+" ");
这个时候我又测试了一下如果是1234 这些数呢,结果发现他们后面会多一个0,1234.0, 那么我也给他强转成taxReceiptDetails.setPhoneNumber((int)cell.getNumericCellValue()+" ");
我这个是电话号码,以及数字 这样强转可以,如果是金额呢,这个时候我们要考虑精度丢失的问题 可以是double 也可以是float ,
解决问题有很多办法,我这是一种而已,也可能不是最好的,对待不同的问题,还要考虑其他方面的影响等等!
taxReceiptDetails
浙公网安备 33010602011771号