POI單元格添加公式以及讀取公式結果的值


POI提供了為單元格添加條件樣式的方法,但是我並沒有找到獲取單元格改變后樣式的方法,獲取到樣式依舊是沒有改變之前的。

比如為單元格添加條件樣式用於監聽單元格值是否被修改,如果單元格值被修改那么字體顏色變紅。

但是即使字體變紅了,POI獲取字體顏色依舊是黑色的,而不是紅色的。這樣就無法監聽到單元格的變化。

因此只能另辟蹊徑,每個單元格對應一個隱藏的單元使用公式監聽單元格是否被修改。

我這里是當單元格被修改時,將相應的列號添加到隱藏單元格中,分別用逗號隔開。只要讀取到單元格的值遍歷行數即可以得到對應被修改的列號,從而定位哪個單元格被修改。

 

POI單元格添加公式的方法是:

org.apache.poi.hssf.usermodel.HSSFCell.setCellFormula(String formula);

POI單元格的格式CellType為CELL_TYPE_FORMULA(對應型號編碼2)

POI讀取公式類型的單元格的方法與普通讀取單元格的方法是不同的:

HSSFFormulaEvaluator eva= new HSSFFormulaEvaluator(HSSFWorkBook wb);
CellValue cellVal = eva.evaluate(row.getCell(short index));//獲取單元格的值

//根據值的類型獲取公式的計算結果
String cellValue= (cellVal.getCellType()==HSSFCell.LAST_COLUMN_NUMBER)
                            ?String.valueOf(cellVal.getNumberValue())
                            :cellVal.getStringValue();

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM