如何使用poi从xlsx文件中删除公式?

时间:2016-02-14 14:10:56

标签: java apache-poi

我有一个xlsx文件,其中包含一些单元格的公式。我知道行的索引以及包含公式的单元格。我只需删除公式,也不需要删除特定单元格中的值。可能吗?如下所示:

I have the below formula for 1st row 3rd cell

Formula is SUM(A1:D1) and value of cell is 4;

我只想将单元格值保持为“4”,只使用POI删除公式“(SUM(A1:D1))”。

1 个答案:

答案 0 :(得分:1)

您需要使用FormulaEvaluator.evaluateInCell(Cell)。正如javadocs中所解释的那样:

  

如果单元格包含公式,它会计算公式,并将公式结果放回单元格中,代替旧公式。否则,如果单元格不包含公式,则此方法将保持单元格不变。

您可以在Apache POI documentation on evaluating formulas中找到更多详细信息和示例,但基本上您只需要遵循其中给出的示例代码,例如

File file = new File("/somepath/test.xls");
Workbook wb = WorkbookFactory.create(file);
Sheet sheet = wb.getSheetAt(0);
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();

// suppose your formula is in B3
CellReference cellReference = new CellReference("B3");
Row row = sheet.getRow(cellReference.getRow());
Cell cell = row.getCell(cellReference.getCol()); 

evaluator.evaluateInCell(cell);