如何使用Apache POI设置Excel的公式字段

发布于:2023-04-27 ⋅ 阅读:(389) ⋅ 点赞:(0)

如何使用Apache POI设置Excel的公式字段

1. 概述

在本文中,我们将通过一个简单的示例来演示如何使用Apache POI在Microsoft Excel电子表格中设置公式字段

2. Apache POI

Apache POI是一个流行的开源Java库,它提供了用于创建、修改和显示MS Office文件的api

POI使用工作簿Workbook来表示Excel文件及其元素。Excel文件中的单元格Cell可以有不同类型,比如FORMULA。

为了演示Apache POI的实际操作,我们将设置一个公式来减去Excel文件中a和B列中值的总和。链接文件包含以下数据:

A B C
100 200
200 300
300 400

3. 依赖项

首先,我们需要将POI依赖项添加到我们的project pomc.xml文件中。如果使用的是Excel2007+,我们应该使用poi-ooxml:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>

注意,对于早期版本的Excel,我们应该使用poi依赖项

4. Cell 查找

首先,让我们打开文件并构建工作簿Workbook对象:

FileInputStream inputStream = new FileInputStream(new File(fileLocation));
XSSFWorkbook excel = new XSSFWorkbook(inputStream);

然后,我们需要创建或查找将要使用的单元格。使用前面Excell中的表格数据,我们希望编辑单元格C1。

单元格位于第一格sheet和第一行,我们可以问POI第一个空白列:

XSSFSheet sheet = excel.getSheetAt(0);
int lastCellNum = sheet.getRow(0).getLastCellNum();
XSSFCell formulaCell = sheet.getRow(0).createCell(lastCellNum + 1);

5. Formulas 公式

接下来,我们想在查找的单元格上设置一个公式。

如前所述,我们用A列的和减去B列的和,在Excel中公式:

=SUM(A:A)-SUM(B:B)

我们可以用setCellFormula方法把它写进我们的公式中:

formulaCell.setCellFormula("SUM(A:A)-SUM(B:B)");

目前为止,还不能算出公式的值,我们需要使用POI的XSSFFormulaEvaluator 来计算值 :

XSSFFormulaEvaluator formulaEvaluator = 
  excel.getCreationHelper().createFormulaEvaluator();
formulaEvaluator.evaluateFormulaCell(formulaCell);

执行后结果如下:

A B C
100 200 -300
200 300
300 400

可以看到,计算结果保存在C列的第一行单元格中,公式也显示在公式栏中

FormulaEvaluator类为我们提供了在Excel工作簿中计算公式的其他方法,比如evaluateAll,它将循环遍历所有单元格并对它们进行计算

  1. 结论

在本教程中,我们展示了如何使用Apache POI API在Java Excel文件中的单元格上设置公式