Microsoft Excel强大的公式功能对于执行复杂的计算,数据分析和创建动态报告至关重要。但是,如果您可以使用Java库自动化这些公式化操作,该怎么办?那就是Apache Poi发挥作用的地方。在此博客文章中,我们将展示如何使用Apache POI库来计算Java应用程序中的Excel公式,并将工作簿保存为XLSX文件

了解公式和计算

公式是Excel功能的核心。它们允许您执行数学操作,操纵数据并在不同单元格之间建立关系。 Apache Poi使Java开发人员可以编程生成和操纵这些公式,从而实现自动化和自定义。

设置您的项目

在我们深入了解公式的细节之前,让我们设置我们的项目与Apache Poi一起工作。您需要在Java项目中包括适当的POI库。您可以从Apache POI网站下载库,也可以通过Maven或Gradle等依赖关系管理工具添加它们。查看我们的Apache POI API概述文章,以获取有关设置项目开发环境的更多信息。

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

创建基本公式

让我们从一个简单的例子开始。想象一下,您的Excel表格有两个包含数字的列。您想在第三列中计算这些数字的总和。您可以使用Apache Poi实现此目的:

导入必要的类

首先从Apache POI库中导入所需的类,例如工作簿,工作表和行。

访问所需的单元

使用getCell()方法访问包含您要汇总的数字的单元格。

创建公式

利用CreateFormula()方法生成公式。在这种情况下,它将类似于总和(A2:B2)。

将公式设置为目标单元

将公式分配给您希望使用setCellformula()方法出现结果的单元格。

评估公式

设置公式后,使用 estureformulacell() 计算和填充结果。

使用Apache Poi Java库{.wp-block-pheading}的excel公式}

让我们查看以下代码示例,其中使用:

  • 添加 公式以在单元格中添加两个值
  • 功率 公式来计算单元格中值的功率
  • max 公式以获取单元格的最大值
  • 事实 公式计算单元格中值的阶乘
  • sqrt 公式计算单元格中值的平方根 以下代码示例显示了从Java应用程序中使用这些Excel公式。
XSSFWorkbook wb = new XSSFWorkbook(); 
XSSFSheet spreadsheet = wb("formula");
XSSFRow row = spreadsheet.createRow(1);
XSSFCell cell = row.createCell(1);
cell.setCellValue("A = ");
cell = row.createCell(2);
cell.setCellValue(2);
row = spreadsheet.createRow(2);
cell = row.createCell(1);
cell.setCellValue("B = ");
cell = row.createCell(2);
cell.setCellValue(4);
row = spreadsheet.createRow(3);
cell = row.createCell(1);
cell.setCellValue("Total = ");
cell = row.createCell(2);
// Create SUM formula
cell.setCellFormula("SUM(C2:C3)");
cell = row.createCell(3);
cell.setCellValue("SUM(C2:C3)");
row = spreadsheet.createRow(4);
cell = row.createCell(1);
cell.setCellValue("POWER =");
cell=row.createCell(2);
// Create POWER formula
cell.setCellFormula("POWER(C2,C3)");
cell = row.createCell(3);
cell.setCellValue("POWER(C2,C3)");
row = spreadsheet.createRow(5);
cell = row.createCell(1);
cell.setCellValue("MAX = ");
cell = row.createCell(2);
// Create MAX formula
cell.setCellFormula("MAX(C2,C3)");
cell = row.createCell(3);
cell.setCellValue("MAX(C2,C3)");
row = spreadsheet.createRow(6);
cell = row.createCell(1);
cell.setCellValue("FACT = ");
cell = row.createCell(2);
// Create FACT formula
cell.setCellFormula("FACT(C3)");
cell = row.createCell(3);
cell.setCellValue("FACT(C3)");
row = spreadsheet.createRow(7);
cell = row.createCell(1);
cell.setCellValue("SQRT = ");
cell = row.createCell(2);
// Create SQRT formula
cell.setCellFormula("SQRT(C5)");
cell = row.createCell(3);
cell.setCellValue("SQRT(C5)");
wb.getCreationHelper().createFormulaEvaluator().evaluateAll();
FileOutputStream out = new FileOutputStream("formula.xlsx");
wb.write(out);
out.close();
System.out.println("fromula.xlsx written successfully");

结论

Apache POI解锁了通过Java代码自动化和自定义Excel公式和计算的潜力。无论您是构建财务报告,数据分析工具还是任何涉及Excel操作的应用程序,Apache Poi的配方功能都是您工具包的强大补充。通过了解如何使用Apache POI创建,评估和管理公式,您可以简化工作流程,提高准确性并节省宝贵的时间。