今天遇见一个问题,就是导入的时候发现,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
posted on 2019-07-02 17:51  沐雨清晨  阅读(342)  评论(0)    收藏  举报