如何在Java中使用Excel的“转换为数字”

时间:2014-09-03 05:09:12

标签: java excel apache-poi

我正在使用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单元时我想要相同的输出。

enter image description here

也可以使用Excel中的=VALUE()函数来实现。但是如何在Java中实现相同的功能呢?

2 个答案:

答案 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()