Contents

Apache POI 设置Excel中的公式

1. 概述

在这个快速教程中,我们将通过一个简单的示例来讨论如何使用 Apache POI 在 Microsoft Excel 电子表格中设置公式。

2. Apache POI

Apache POI 是一个流行的开源 Java 库,它为程序员提供 API 来创建、修改和显示 MS Office文件。 它使用Workbook 来表示 Excel 文件及其元素。Excel 文件中的cell 可以有不同的类型,例如FORMULA

/uploads/java_apache_poi_set_formulas/1.png

3. 依赖关系

首先,我们需要将 POI 依赖添加到我们的项目pom.xml文件中。要使用 Excel 2007+ 工作簿,我们应该使用poi-ooxml **:

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

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

4. 单元格查找

首先,让我们首先打开我们的文件并构建适当的工作簿:

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

然后,我们需要创建或查找我们将要使用的单元格。使用之前共享的数据,我们要编辑单元格 C1。 这是在第一张纸和第一行,我们可以向 POI 询问第一个空白列:

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

5. 公式

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

如前所述,让我们从 A 列的总和中减去 B 列的总和。在 Excel 中,这将是:

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

我们可以使用 setCellFormula方法将其写入我们 的formulaCell中:

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

**现在,这不会评估公式。**为此,我们需要使用 POI 的XSSFFormulaEvaluator

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

结果将设置在下一个空列的第一个cell中: /uploads/java_apache_poi_set_formulas/3.png

如我们所见,计算结果并保存在 C 列的第一个单元格中。公式也显示在公式栏中。

请注意,FormulaEvaluator 类为我们提供了其他方法来评估Excel 工作簿中的FORMULA,例如evaluateAll,它将遍历所有单元格并评估它们。