[英]Excel formula not updating on row delete from java application using Apache POI
我在我的應用程序中使用Apache POI將數據寫入excel文件。 我有一個excel文件模板,其中還有一些公式。 在我的應用程序中,我使用excel模板,寫入,然后刪除未使用的行並最終計算公式。 我在文件中使用SUM公式。 問題是當刪除行時,SUM公式不會更新,因為excel中會出現錯誤值。
示例:使用的公式為:對於單元格B215:SUM(B15:B214)。 在應用程序中,寫入文件后我刪除了未使用的行。 現在我的數據直到文件中的第70行。所有其他行都被刪除了。 所以我的公式應該更新為:單元格B70的SUM(B15:B69)。 但是在文件中它仍然顯示公式為SUM(B15:B214)。 因此,該單元格的值為“VALUE#”
代碼段:
File file = new File(path)
InputStream is = new FileInputStream(file)
POIFSFileSystem fs = new POIFSFileSystem(is)
HSSFWorkbook wb = new HSSFWorkbook(fs)
HSSFSheet excelSheet
int[] indexArray = populateSheet(excelSheet)
// indexArray是具有3個值的數組,如startrow,lastrow和第一個空行。
removeBlankRows(excelSheet,indexArray)
//evaluate formula
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator()
for(HSSFRow r : excelSheet) {
for(HSSFCell c : r) {
if(c.getCellType() == Cell.CELL_TYPE_FORMULA) {
String formula = c.getCellFormula();
evaluator.evaluateFormulaCell(c)
}
}
}
private void removeBlankRows(HSSFSheet sheet, int[] shiftInfo){
for(int i = shiftInfo[2]; i <= shiftInfo[1]; ++i) {
sheet.removeRow(sheet.getRow(i))
}
//Shift up the rows
def startRow = shiftInfo[1]+1
def endRow = sheet.getLastRowNum()
def rowCount = -1* (shiftInfo[1] - shiftInfo[2] + 1)
sheet.shiftRows(startRow, endRow, rowCount)
}
這是一個Excel錯誤。 我過去通過以下方式解決了這個問題:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.