如何使用poi从Excel表格中检索百分比types值

我正在尝试使用Apache POI读取Excel表格的单元格值。 我的一个表格包含百分比types作为单元格types。 当我使用cell.getNumbericValue()使用POI读取单元格时,它返回double值。 如果单元格包含11.24%,它返回给我0.1124。 我的问题是,我也想从单元格读取%符号,即我想读取单元格中的精确数据为11.24%。 所以,我试着用cell.toString(),即使这样它返回的值与上面相同。 任何人都可以请build议我,如何摆脱这个问题。 在此先感谢南都

您可以通过像这样testing单元格数据格式string来检测单元格是否被格式化为百分比:

if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) { if (cell.getCellStyle().getDataFormatString().contains("%")) { // Detect Percent Values Double value = cell.getNumericCellValue() * 100; System.out.println("Percent value found = " + value.toString() +"%"); } else { Double value = cell.getNumericCellValue(); System.out.println("Non percent value found = " + value.toString()); } } 

这应该使您能够区分百分比格式的值和普通的数值。

试试这个,String typeCell = cell.getCellStyle()。getDataFormatString(); 它给

  • 非格式化单元的“一般”值,
  • 百分比格式为“0%”
  • 日/月/年,取决于语言环境

我设法parsing单元格中的所有types(数字,百分比,date,文本,货币)我只需要检查它将给我什么样的值。 因为我也有很多HSSFCell.CELL_TYPE_STRING或HSSFCell.CELL_TYPE_NUMERIC:

11.24%是0.1124,这就是为什么这是存储在文件中,这就是你要求的数值时

POI提供了一种基于应用于单元格(即DataFormatter)的格式规则来格式化数字string的实用程序。 如果使用它来格式化单元格,则会在Excel中看到包含单元格内容的string。