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);
}
}
}
}