【发布时间】:2016-07-04 10:32:57
【问题描述】:
在我的 Excel 表中,许多单元格包含公式,当我使用 Apache POI 读取 excel 时,我不想重新计算这些公式。
我这样做的方式:
if(cell.getCellType() == XSSFCell.CELL_TYPE_FORMULA) {
//System.out.println("Formula is " + cell.getCellFormula());
switch(cell.getCachedFormulaResultType()) {
case XSSFCell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() +" ");
break;
case XSSFCell.CELL_TYPE_STRING:
System.out.print(cell.getRichStringCellValue()+" ");
break;
}
}
这有助于我获取单元格中的原始值。 例如,如果单元格的值为 19.5%,这将给我 0.195456 。 我想获取格式化后的值。
获取格式化值的一种方法是:
DataFormatter formatter = new DataFormatter();
System.out.print(formatter.formatCellValue(cell));
这适用于常规单元格,但对于带有公式的单元格,这实际上获取公式字符串并显示它,即它不会获取缓存值并对其进行格式化,而只是返回公式字符串。
有没有办法在从 CELL_TYPE_FORMULA 中检索一个值后对其进行格式化
【问题讨论】:
标签: java excel apache-poi xssf