Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用POI api从Excel工作表中删除公式?_Excel_Apache Poi_Excel Formula - Fatal编程技术网

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

如何使用POI api从Excel工作表中删除公式?,excel,apache-poi,excel-formula,Excel,Apache Poi,Excel Formula,使用cell.setCellFormula(null)方法,我们可以删除公式,但它会影响具有依赖于此单元格的值的单元格。我想删除整个工作表中的所有公式,而不更改任何单元格的值。请给我一些建议……你的问题有点模棱两可,但我想猜猜你在追求什么,然后回答我认为你的意思 假设excel文件看起来像: | | A | B | C | | 1 | 2 | 4 | 6 | | 2 | =SUM(A1:C1) | =A2

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

你的问题有点模棱两可,但我想猜猜你在追求什么,然后回答我认为你的意思

假设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);

如果对文件aready进行了其他更改,则需要对单元格求值,然后用求值值替换内容。您可以使用公式解析器,使用该方法执行此操作。

如果可能重复该方法是错误的解决方案,您将得到:无法从文本公式单元格中获取数值