Java 如何使用poi从excel工作表中检索百分比类型值
我正在尝试使用ApachePOI读取单元格值excel表。我的一张工作表包含百分比类型作为单元格类型。当我使用POI和cell.getNumbericValue()读取该单元格时,它会返回双精度值。如果单元格包含11.24%,则返回0.1124。 我的问题是,我想从单元格中读取%符号,也就是说,我想读取单元格中11.24%的精确数据。因此,我使用cell.toString()尝试了它,即使它返回与上面相同的值。 谁能给我建议一下,如何解决这个问题。 提前谢谢Java 如何使用poi从excel工作表中检索百分比类型值,java,excel,apache-poi,Java,Excel,Apache Poi,我正在尝试使用ApachePOI读取单元格值excel表。我的一张工作表包含百分比类型作为单元格类型。当我使用POI和cell.getNumbericValue()读取该单元格时,它会返回双精度值。如果单元格包含11.24%,则返回0.1124。 我的问题是,我想从单元格中读取%符号,也就是说,我想读取单元格中11.24%的精确数据。因此,我使用cell.toString()尝试了它,即使它返回与上面相同的值。 谁能给我建议一下,如何解决这个问题。 提前谢谢 Nandu11.24%是0.1124
Nandu11.24%是0.1124,这就是为什么存储在文件中的是0.1124,这就是您请求数值时得到的结果
POI提供了一个实用程序,用于根据应用于单元格的格式规则对数字字符串进行格式化,该规则为。如果您使用它来格式化单元格,您将得到一个字符串,其中包含单元格的内容,大体上如Excel中所示 通过如下测试单元格数据格式字符串,可以检测单元格是否按百分比格式化:
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%”表示百分比格式
- 日期为年月日,取决于地区
因为我在使用
HSSFCell.CELL\u TYPE\u STRING
或HSSFCell.CELL\u TYPE\u NUMERIC
时遇到了很多麻烦,@weesetland的答案应该是可以接受的答案
您可以使用
// class level
private static final int PERCENTAGE_FORMAT = BuiltinFormats.getBuiltinFormat("0%");
...
// in some method
if (cell.getCellStyle().getDataFormat() == PERCENTAGE_FORMAT) {
...
这就是你将得到的价值。Excel为它提供了一种显示格式,但数据就是您得到的。执行一些检查以了解单元格是否具有特定类型的数据