Java 如何做Excel';s";“转换为数字”;在爪哇

Java 如何做Excel';s";“转换为数字”;在爪哇,java,excel,apache-poi,Java,Excel,Apache Poi,我正在使用ApachePOI从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()函数来实现。但

我正在使用ApachePOI从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中实现相同的功能呢?

我认为有很多方法可以实现您规定的功能,但是最直接的方法就是使用
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);
如果您愿意,您可以使用相同的方法替换原始单元格的内容。

这对我很有效

new BigDecimal(cell.getNumericCellValue()).toPlainString()

您得到一个字符串,必须使用DecimalFormat,才能将fromat转换为数字。@Anupganatar您可以更清楚地了解excel中的数据是什么,通过Java获得的是什么,以及最终的结果是什么吗want@ankur-singhal我有输入数据,如我在屏幕截图中所示,当我应用=VALUE()函数时,我会得到上面提到的输出。现在我只想要Java中excel的等效函数=VALUE()。这是您要找的吗?@SiddharthRout它没有给出我上面提到的精确输出。请用输入和输出阅读我的问题。谢谢Dave。当您想在excel工作表中书写时,它工作得非常好。但在我的例子中,我正在阅读excel工作表,我想要Java中任何变量的输出。如果要在应用公式的excel单元格中写入输出,可以使用evaluateInCell()。是否尝试获取格式化为上述数字的字符串?或者上述数字在
double
表格中?上述代码将应用公式写入excel单元格。但我想要的是在Java中应用=VALUE()函数,以某个变量获取输出。我不习惯用excel文件写。另外,当我尝试在某个变量中获取输出时,它不会像在excel中编写时那样提供准确的输出。您可以执行另外一个步骤,使用
.setCellType(CellType.STRING.ordinal())
然后使用
.getStringCellValue()
读取单元格的
字符串值。我不确定它的用途是什么,但它应该像Excel中的
常规
格式那样格式化。