POI执行EXCEL中的公式

当EXCEL中包含计算公式时,利用POI去执行的方法如下。

第一种,当你知道你要执行的workbook类型时(HSSF 或者XSSF),可以直接调用静态方法,一次将workbook上的所有公式计算完毕。

File tempFile = new File("/somepath/test.xls");
InputStream tempFileStream = new FileInputStream(tempFile);
HSSFWorkbook workBook = new HSSFWorkbook(tempFileStream);
// 执行计算公式
HSSFFormulaEvaluator.evaluateAllFormulaCells(workBook);

注意:当你利用POI写入单元格的内容不是Number类型,而是文本类型时。上述计算是不会执行的。


第二种: 遍历整个workbook去执行:

FileInputStream fis = new FileInputStream("/somepath/test.xls");
Workbook wb = new HSSFWorkbook(fis); //or new XSSFWorkbook("/somepath/test.xls")
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
for(int sheetNum = 0; sheetNum < wb.getNumberOfSheets(); sheetNum++) {
    Sheet sheet = wb.getSheetAt(sheetNum);
    for(Row r : sheet) {
        for(Cell c : r) {
            if(c.getCellType() == Cell.CELL_TYPE_FORMULA) {
                evaluator.evaluateFormulaCell(c);
            }
        }
    }
}


你可能感兴趣的:(JAVA)