使用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,并没有丢失。