Java Excel 动态求和

前言

在日常工作和数据分析中,经常需要对 Excel 表格中的数据进行求和操作。Java 是一种强大的编程语言,可以利用它的库和工具来处理 Excel 文件。本文将介绍如何使用 Java 实现动态求和功能,同时提供代码示例。

准备工作

在开始之前,需要确保已经安装并配置好以下工具和库:

  • Java 开发环境
  • Apache POI 库:用于读取和写入 Excel 文件
  • JFreeChart 库:用于生成图表

读取 Excel 数据

首先,我们需要读取 Excel 文件中的数据。下面是一个示例 Excel 文件,包含了姓名、年龄和成绩三列数据:

姓名 年龄 成绩
张三 20 85
李四 22 90
王五 21 78
小明 19 92

我们可以使用 Apache POI 库来读取 Excel 文件中的数据。首先,需要创建一个 Workbook 对象,然后通过它来获取 Sheet 对象。接下来,可以通过 Sheet 对象来遍历行和列,获取每个单元格的值。

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

public class ExcelReader {
    public static void main(String[] args) {
        try {
            Workbook workbook = WorkbookFactory.create(new File("data.xlsx"));
            Sheet sheet = workbook.getSheetAt(0);

            for (Row row : sheet) {
                for (Cell cell : row) {
                    String value = cell.getStringCellValue();
                    System.out.print(value + "\t");
                }
                System.out.println();
            }

            workbook.close();
        } catch (IOException | InvalidFormatException e) {
            e.printStackTrace();
        }
    }
}

以上代码将读取名为 "data.xlsx" 的 Excel 文件,并将数据打印到控制台。

动态求和

接下来,我们需要实现动态求和的功能。动态求和是指根据用户的选择,计算所选列的和。我们可以通过在控制台接受用户输入来实现这个功能。

首先,我们需要修改之前的代码,将读取到的数据保存到一个二维数组中:

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

public class ExcelReader {
    public static void main(String[] args) {
        try {
            Workbook workbook = WorkbookFactory.create(new File("data.xlsx"));
            Sheet sheet = workbook.getSheetAt(0);
            int rows = sheet.getLastRowNum() + 1;
            int cols = sheet.getRow(0).getLastCellNum();

            String[][] data = new String[rows][cols];

            for (int i = 0; i < rows; i++) {
                Row row = sheet.getRow(i);
                for (int j = 0; j < cols; j++) {
                    Cell cell = row.getCell(j);
                    String value = cell.getStringCellValue();
                    data[i][j] = value;
                }
            }

            workbook.close();

            // 打印数据
            for (String[] row : data) {
                for (String value : row) {
                    System.out.print(value + "\t");
                }
                System.out.println();
            }
        } catch (IOException | InvalidFormatException e) {
            e.printStackTrace();
        }
    }
}

接下来,我们需要实现动态求和的逻辑。用户可以选择要求和的列,并指定起始行和结束行。我们可以通过添加一些输入的代码来实现这个功能:

import org.apache.poi.ss.usermodel.*;
import java.util.Scanner;

public class ExcelReader {
    public static void main(String[] args) {
        try {
            Workbook workbook = WorkbookFactory.create(new File("data.xlsx"));
            Sheet sheet = workbook.getSheetAt(0);
            int rows = sheet.getLastRowNum() + 1;
            int cols = sheet.getRow(0).getLastCellNum();

            String[][] data = new String[rows][cols];

            for (int i = 0; i < rows; i++) {
                Row row = sheet.getRow(i);
                for (int j = 0; j < cols; j++) {
                    Cell cell = row.getCell(j);
                    String value = cell.getStringCellValue();
                    data[i][j] = value;
                }
            }

            workbook.close();

            // 打印数据
            for (String[] row : data) {
                for (String value : row) {
                    System.out.print(value + "\t");
                }
                System.out.println();
            }

            // 动态求和
            Scanner scanner = new Scanner(System.in);
            System.out