我正在使用Apache POI从Excel读取数据。我希望在阅读Java时将一些单元格转换为数字,如下所示:
Input 01.0234500
Output 1.02345
Input 412206362371
Output 4.12206E+11
Input 1234.201400002345
Output 1234.2014
当我在Excel中使用“转换为数字”时,它工作正常。但是在Java中读取Excel单元时我想要相同的输出。
也可以使用Excel中的=VALUE()
函数来实现。但是如何在Java中实现相同的功能呢?
答案 0 :(得分:3)
我认为有很多方法可以实现您的规定,但最直接的方法是使用VALUE()
函数然后对其进行评估。这当然不是最有效的方法,但它确实有效。
基本上我们只读取输入单元格的值,然后创建一个新的单元格公式单元格,其中包含VALUE()
函数,原始值作为参数。之后,我们调用evalutateInCell
来评估VALUE()
函数,并将结果替换为单元格值。
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("test");
Row row = sheet.createRow(0);
Cell inCell = row.createCell(0);
inCell.setCellValue("01.0234500");
Cell outCell = row.createCell(1);
FormulaEvaluator fev = wb.getCreationHelper().createFormulaEvaluator();
String value = inCell.getStringCellValue();
outCell.setCellFormula("VALUE(" + value + ")");
fev.evaluateInCell(outCell);
如果您愿意,可以使用相同的方法替换原始单元格的内容。
答案 1 :(得分:0)
这对我有用
new BigDecimal(cell.getNumericCellValue()).toPlainString()