使用Apache POI處理excel公式不更新的解決辦法

使用poi更新excel時,如果單元格A設(shè)置了公式,當其依賴的其他單元格填充了值之后,導出的excel中A仍為公式而不是自動計算的值,如圖:


Paste_Image.png

分值小計沒有更新成計算結(jié)果。

解決方法

poi中提供了org.apache.poi.ss.usermodel.FormulaEvaluator這個接口,實現(xiàn)對公式的更新。其中HSSFFormulaEvaluator, XSSFFormulaEvaluator 實現(xiàn)了這個接口。

實現(xiàn)思路

我們可以遍歷一行單元格中的所有格,判斷如果其類型為Cell.CELL_TYPE_FORMULA,則證明此單元格為公式,可以使用evaluator.evaluateFormulaCell(cell);將其更新。示例代碼如下:

private static void updateFormula(Workbook wb,Sheet s,int row){
        Row r=s.getRow(row);
        Cell c=null;
        FormulaEcaluator eval=null;
        if(wb instanceof HSSFWorkbook)
            eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);
        else if(wb instanceof XSSFWorkbook)
            eval=new XSSFFormulaEvaluator((XSSFWorkbook) wb);
        for(int i=r.getFirstCellNum();i<r.getLastCellNum();i++){
            c=r.getCell(i);
            if(c.getCellType()==Cell.CELL_TYPE_FORMULA)
                eval.evaluateFormulaCell(c);
        }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)自鏈接 目錄 1.認識NPOI 2.使用NPOI生成xls文件 2.1創(chuàng)建基本內(nèi)容 2.1.1創(chuàng)建Workboo...
    腿毛褲閱讀 11,143評論 1 3
  • 使用首先需要了解他的工作原理 1.POI結(jié)構(gòu)與常用類 (1)創(chuàng)建Workbook和Sheet (2)創(chuàng)建單元格 (...
    長城ol閱讀 8,737評論 2 25
  • POI操作Excel Excel簡介一個excel文件就是一個工作簿workbook,一個工作簿中可以創(chuàng)建多張工作...
    灰氣球閱讀 5,020評論 2 48
  • 自從2014年開通[完美Excel]微信公眾號以來,堅持分享已經(jīng)學習到的Excel和VBA知識和心得,目前已分享文...
    完美Excel閱讀 8,453評論 6 69
  • 該文章為本系列的第一篇第二篇為 : Java POI操作Excel(Event Model)第三篇為 : Java...
    mmlmml閱讀 13,635評論 6 21

友情鏈接更多精彩內(nèi)容