java – Apache POI DataFormatter返回科学记数法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Apache POI DataFormatter返回科学记数法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1412字,纯文字阅读大概需要3分钟。
内容图文
我有一个xlsx文件,我正在阅读Java 6中的apache poi 3.17.在一个实例中,我有一个值为123456789011的单元格.这被读入java作为NUMERIC CellTypeEnum Cell.当我使用DataFormatter获取单元格的值时,如下所示:
DataFormatter formatter = new DataFormatter(Locale.US);
String strVal = formatter.formatCellValue(cell);
字符串值的格式为“1.234567 11”.我需要单元格中的实际值“123456789011”.我怎么能得到它?
我已经尝试在Java中使用BigDecimal转换字符串,但返回“123456700000”,因为这是给定信息的最佳效果;意思是我需要从实际的单元格对象中获取正确的值.我也尝试使用cell.getNumericCellValue()但是它返回一个double,它的限制太小而无法处理原始值,因此它被检索为“1.234567E11”,它与其他检索方法具有相同的问题.
有没有办法从原始Cell中获取值作为字符串,因为它是在xlsx中输入的?我对原来的xlsx没有任何威力.
谢谢.
解决方法:
使用BigDecimal的toPlainString()方法.它采用科学记数法并将其转换为相应的数字字符串值.
我尝试这样做:(我的表单中的单元格A1的编号为123456789011,单元格类型为NUMERIC)
Row row = sheet.getRow(0);
Object o = getCellValue(row.getCell(0));
System.out.println(new BigDecimal(o.toString()).toPlainString());
getCellValue方法是我读取单元格的通用方法:
public Object getCellValue(Cell cell) {
if (cell != null) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
return cell.getStringCellValue();
case Cell.CELL_TYPE_BOOLEAN:
return cell.getBooleanCellValue();
case Cell.CELL_TYPE_NUMERIC:
return cell.getNumericCellValue();
}
}
return null;
}
希望这可以帮助!
内容总结
以上是互联网集市为您收集整理的java – Apache POI DataFormatter返回科学记数法全部内容,希望文章能够帮你解决java – Apache POI DataFormatter返回科学记数法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。