Java操作Excel添加公式

在日常的工作中,我们经常需要处理Excel文件,并进行一些复杂的计算和公式运算。而Java作为一种强大的编程语言,提供了丰富的库和工具,可以方便地操作Excel,并且还可以添加公式来实现自动计算。本文将介绍如何使用Java操作Excel并添加公式的方法。

准备工作

在开始编写代码之前,我们首先需要准备好一些必要的工具和库。下面是一些常用的工具和库,用于操作Excel文件:

  • Apache POI: 一个用于操作Microsoft Office格式文件(如Excel)的Java库,包括读取、写入和修改功能。
  • Apache POI-OOXML: 一个用于处理Office Open XML(即xlsx格式)的扩展库。
  • Apache POI-HSSF: 一个用于处理旧的Excel格式(即xls格式)的扩展库。

你可以通过Maven或Gradle等构建工具将这些库添加到你的项目中。下面是一个简单的Maven依赖配置示例:

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

创建Excel文件

首先,我们需要创建一个Excel文件,并添加一些数据。在这个示例中,我们将创建一个包含学生成绩的Excel表格。每个学生的成绩由三个科目的得分计算得到。我们将使用Apache POI库来完成这个任务。

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class CreateExcelFile {

    public static void main(String[] args) {
        // 创建工作簿
        Workbook workbook = new XSSFWorkbook();

        // 创建工作表
        Sheet sheet = workbook.createSheet("成绩表");

        // 创建标题行
        Row headerRow = sheet.createRow(0);
        Cell headerCell = headerRow.createCell(0);
        headerCell.setCellValue("姓名");
        headerCell = headerRow.createCell(1);
        headerCell.setCellValue("科目1");
        headerCell = headerRow.createCell(2);
        headerCell.setCellValue("科目2");
        headerCell = headerRow.createCell(3);
        headerCell.setCellValue("科目3");
        headerCell = headerRow.createCell(4);
        headerCell.setCellValue("总分");

        // 创建数据行
        Row dataRow = sheet.createRow(1);
        Cell dataCell = dataRow.createCell(0);
        dataCell.setCellValue("张三");
        dataCell = dataRow.createCell(1);
        dataCell.setCellValue(90);
        dataCell = dataRow.createCell(2);
        dataCell.setCellValue(80);
        dataCell = dataRow.createCell(3);
        dataCell.setCellValue(95);
        dataCell = dataRow.createCell(4);
        dataCell.setCellFormula("B2+C2+D2");

        // 保存Excel文件
        try (FileOutputStream outputStream = new FileOutputStream("成绩表.xlsx")) {
            workbook.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("Excel文件创建成功!");
    }
}

运行上述代码后,将生成一个名为成绩表.xlsx的Excel文件,其中包含一个名为成绩表的工作表。工作表包含了学生的姓名、三个科目的得分和总分。公式B2+C2+D2用于计算总分。

添加公式

要在Excel中使用公式,我们只需将公式字符串设置给单元格的CellFormula属性即可。下面的示例代码演示了如何为一个单元格添加公式:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;
import java.util.Iterator;

public class AddFormulaToExcel {

    public static void main(String[] args) {
        // 读取Excel文件
        try (InputStream inputStream = new FileInputStream("成绩表.xlsx");
             Workbook workbook = new XSSFWorkbook(inputStream)) {

            // 获取工作表
            Sheet sheet = workbook.getSheetAt(0);

            // 获取最后一行的索引
            int lastRowIndex = sheet.getLastRowNum();

            // 遍历每一行
            for (int rowIndex = 1; rowIndex <= last