高手来吧,关于POI(或其他相关项目)解析EXCEL时的格式问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高手来吧,关于POI(或其他相关项目)解析EXCEL时的格式问题相关的知识,希望对你有一定的参考价值。

情况是这样的,在EXCEL中一个数字(货币)格式的值是 333,333,33
一个文本格式的值 111,222,333
导入的时候一律使用 String value = cell.toString();
cell 是 org.apache.poi.hssf.usermodel.HSSFCell

现在的情况是 数字格式导入后因为返回的是double,所以不管有没有toString 都会变成33333333.0
而文本格式则很正常的是 111,222,333

现在要求就算在EXCEL中是数字格式(货币,或者其他任何格式)
都能够所见即所得的得到在EXCEL中填写的格式的值 也就是不更改EXCEL中类型为文本,就能够获取333,333,33这样的值
虽然我也知道其实333,333,33在EXCEL中也是以普通数字存储的,但是客户不想每个字段的去更改格式,所以还是问下POI有没有方法或者其他的解析EXCEL的东西能够不管格式的所见即所得获取EXCEL中的值

可以再加100分 高手来吧哈哈
已经自己解决了,1楼的方案不行,如果别人是别的格式那怎么办?

使用 HSSFDataFormatter hSSFDataFormatter = new HSSFDataFormatter();
String value = hSSFDataFormatter.formatCellValue(cell);
即可以EXCEL原来格式的方式取得值
不过对于日期类型需要一个判断

参考技术A 你可以先判断读取的单元格的类型是什么啊:cell.getCellType() == HSSFCell.CELL_TYPE_STRING或cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC
如果是数字型的你就把它格式化下,如果是字符型的就不加处理.
像if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
String value =new DecimalFormat("##,###,###,###,##0.00").format((cell.getNumericCellValue());
else if(cell.getCellType() == HSSFCell.CELL_TYPE_STRING)
String value=cell.getStringCellValue();
参考技术B 撸主怎么解决的,我也碰到了一样的问题哦。求帮助

以上是关于高手来吧,关于POI(或其他相关项目)解析EXCEL时的格式问题的主要内容,如果未能解决你的问题,请参考以下文章

org.apache.poi.hssf.usermodel.HSSFWorkbookorg.apache.poi.xssf.usermodel.XSSFWorkbook excel2003 exce

java使用poi解析或处理excel的时候,如何防止数字变成科学计数法的形式和其他常见Excel中数据转换问题

请问poi cell.getcelltype=0是数字,poi cell.getcelltype=1是string,poi cell.getcelltype=2是时间吗?

求poi API 中文文档 最好是针对于word解析的

java poi技术读取到数据库

使用Apache POI从excel文件中获取图像及其位置