Java 如何做Excel';s";“转换为数字”;在爪哇
我正在使用ApachePOI从Excel读取数据。我想在Java中读取时将一些单元格转换为数字,如下所示: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()函数来实现。但
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中的常规
格式那样格式化。