阅读货币&使用Java的%

时间:2015-10-26 15:14:35

标签: java excel apache-poi

我正在尝试使用Apache Poi(v3.11 / XSSFWorkbook)读取excel文件。我正在阅读特定的表格{e.x. sheet(0)}由来自同一文件的大约15张不同的宏组成。问题是我能够读取非格式化的字符串数据但无法读取格式化的数据,如货币或%。

无论如何,我无法控制excel工作表。我将从网络共享路径中读取文件。

XSSFWorkbook myWorkBook = null
    XSSFSheet mySheet = null;
    Row rowHeader = null;
    Row rowData = null;
    FileInputStream fis = new FileInputStream(
            new File(
                    "inputfile.xlsx"));
    myWorkBook = new XSSFWorkbook(fis);
    mySheet = myWorkBook.getSheetAt(0);
    rowHeader = mySheet.getRow(0);
    rowData = mySheet.getRow(1);



        for (Cell s : rowHeader) {  
                System.out.print("|  "+s.getStringCellValue());
                System.out.println(" -->"+getCellValue(myWorkBook,rowData.getCell(s.getColumnIndex())));
    }

    myWorkBook.close();
}
//   $#,##0.00

private static String getCellValue(XSSFWorkbook wb, Cell cell)
{
   XSSFCell x = (XSSFCell)cell;
   return x.getRawValue();
}
}

我有一张excel表,如下所示

Name    Amount    Rate
Name1   $1,500  75%

如果我使用此代码阅读上述表格

名称 - > NAME1

金额 - > 1500(注意缺少的$和,)

费率 - > 74.99999998(编号未提供且缺少%符号)

2 个答案:

答案 0 :(得分:1)

谢谢@Gagravarr

以下代码解决了问题

private static String getCellValue(XSSFWorkbook wb, Cell cell)
{
  DataFormatter formatter = new DataFormatter();
  String formattedCellValue = formatter.formatCellValue(cell);
  return formattedCellValue; 
}

答案 1 :(得分:0)

从文档中

getRawValue()将返回原始的底层ooxml值。

使用getStringCellValue()代替它,因为它将值作为字符串返回,并且没有任何内容丢失。