如何使用POI api从Excel工作表中删除公式?

时间:2012-06-14 04:57:26

标签: excel apache-poi excel-formula

使用cell.setCellFormula(null)方法我们可以删除公式,但它会影响具有依赖于此单元格的值的单元格。我想从整个工作表中删除所有公式而不更改任何单元格的值。请建议我一些想法...

1 个答案:

答案 0 :(得分:1)

你的问题有点含糊不清,但我会猜测你所追求的并回答我认为你的意思......

假设excel文件看起来像:

|   |      A      |     B   |    C    |
| 1 |      2      |     4   |    6    |
| 2 | =SUM(A1:C1) | =A2*3   | =A2*4   |

我相信你所追求的是从A2中删除公式,但保留当前计算的值(12),以便公式B2和C2不受影响?

有两种方法可以做到这一点。如果您刚刚加载了文件,并且没有对其进行任何更改,那么它非常简单。您需要做的就是将单元格类型从公式单元格更改为数字单元格。它会保留旧的计算值。

sheet.getRow(1).getCell(0).setCellType(Cell.CELL_TYPE_NUMERIC);

如果您对文件进行了其他更改,那么您需要做的是评估单元格,然后用评估值替换内容。您可以使用公式解析器,使用evaluteInCell方法执行此操作。