使用Java读取货币和%

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

无论如何,我不会控制Excel工作表。 我将从networking共享path读取文件。

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% 

如果我使用这个代码阅读上面的表格

名称 – >名称1

金额 – > 1500(注意缺less$和,)

率 – > 74.99999998(号码失真和缺less%符号)

谢谢@Gagravarr

这下面的代码解决了这个问题

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

从文档中,

getRawValue()将返回原始的基础ooxml值。

使用getStringCellValue()因为它返回的值是一个string,并没有丢失。