使用 Apache POI 从 Java 中的 Excel 读取公式字段
Reading Formula fields from Excel in Java using Apache POI
我正在尝试使用 Apache POI 从 Excel 中读取公式值。我几乎能够完美地读取所有值。我的代码片段:
case Cell.CELL_TYPE_FORMULA:
switch(cell.getCachedFormulaResultType()) {
case Cell.CELL_TYPE_NUMERIC:
e=cell.getNumericCellValue();
break;
case Cell.CELL_TYPE_STRING
e=cell.getRichStringCellValue();
break;
}
这在大多数情况下都可以正常工作,例如整数和浮点值,但是当公式使用 % 时就会出现问题。
公式=1234-1200时读数=34
但是当公式=100%-40% 时,它的读数是=0.6 但不是60%。
如何克服这个问题?
在你的案例中尝试这样的事情 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());
}
我正在尝试使用 Apache POI 从 Excel 中读取公式值。我几乎能够完美地读取所有值。我的代码片段:
case Cell.CELL_TYPE_FORMULA:
switch(cell.getCachedFormulaResultType()) {
case Cell.CELL_TYPE_NUMERIC:
e=cell.getNumericCellValue();
break;
case Cell.CELL_TYPE_STRING
e=cell.getRichStringCellValue();
break;
}
这在大多数情况下都可以正常工作,例如整数和浮点值,但是当公式使用 % 时就会出现问题。
公式=1234-1200时读数=34
但是当公式=100%-40% 时,它的读数是=0.6 但不是60%。
如何克服这个问题?
在你的案例中尝试这样的事情 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());
}