Java API 开发中使用 Apache POI 进行 Excel 处理

随着信息化的发展,数据处理的重要性不断凸显。而对于企业和个人而言,Excel 工作表已经成为日常工作中最常用的一种数据处理方式。然而,Excel 工作表虽然易于使用,但随着数据量和处理需求的增加,普通的 Excel 处理方法往往难以满足实际应用需求。此时,Java API 开发中使用 Apache POI 库进行 Excel 处理便成为了一种优秀的选择。

一、Apache POI 简介

Apache POI(Poor Obfuscation Implementation)是一个免费的 Java 库,用于处理和操作 Microsoft Office 格式的文件,其中包括 Word、Excel 和 PowerPoint 等文件。通过 Apache POI,Java 编程人员可以轻松地读取、编写和操作 Office 文件。

Apache POI 大致可分为三个部分:

  • HSSF(Horrible Spreadsheet Format):处理 Excel 97-2003 文件,即 xls 格式;
  • XSSF(XML Spreadsheet Format):处理 Excel 2007 及以上版本的文件,即 xlsx 格式;
  • HWPF(Horrible Word Processor Format)和 XWPF(XML Word Processor Format):分别处理 Word 97-2003 格式的文件和 Word 2007 及以上版本的文件。

本篇文章主要着重介绍 HSSF 和 XSSF 的使用。

二、POI 的安装

在使用 Apache POI 进行 Excel 处理前,我们需要先安装该库。Apache POI 的安装比较简单,只需要下载其最新版本的 jar 包,并将其添加到项目的 classpath 中即可。推荐使用 Maven 或 Gradle 等工具进行 POI 的引入,这样可以避免由于版本冲突等问题导致的异常。

三、读取 Excel 文件

读取 Excel 文件是 Apache POI 应用中最基本的操作之一。下面是读取 xlsx 文件的示例代码。

public static void readXlsx(String filePath) throws IOException {
    FileInputStream fis = new FileInputStream(filePath);
    XSSFWorkbook workbook = new XSSFWorkbook(fis); // 创建工作簿
    XSSFSheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
    int rowStartIndex = sheet.getFirstRowNum(); // 获取第一行的行号
    int rowEndIndex = sheet.getLastRowNum(); // 获取最后一行的行号
    for (int i = rowStartIndex; i <= rowEndIndex; i++) { // 循环行
        XSSFRow row = sheet.getRow(i); // 获取当前行
        if (row == null) { // 若为空行则跳过
            continue;
        }
        int cellStartIndex = row.getFirstCellNum(); // 获取第一列的列号
        int cellEndIndex = row.getLastCellNum() - 1; // 获取最后一列的列号
        for (int j = cellStartIndex; j <= cellEndIndex; j++) { // 循环列
            XSSFCell cell = row.getCell(j); // 获取当前单元格
            String cellValue = cell.getStringCellValue(); // 获取当前单元格的值
            System.out.print(cellValue + "  "); // 输出到控制台
        }
        System.out.println();
    }
    workbook.close(); // 关闭工作簿
    fis.close(); // 关闭输入流
}

在这段代码中,我们首先使用 FileInputStream 打开 xlsx 文件,并利用 XSSFWorkbook 创建工作簿。然后,我们获取第一个工作表,并使用循环逐行和逐列读取文件中的内容,将每个单元格的值输出到控制台。最后,我们需要关闭工作簿和输入流来释放资源。

读取 xls 文件与读取 xlsx 文件基本相同,只需要将 XSSF 相关的代码改成 HSSF 就可以了。

四、写入 Excel 文件

写入 Excel 文件也是 Apache POI 应用中常用的操作之一。下面是写入 xlsx 文件的示例代码。

public static void writeXlsx(String filePath) throws IOException {
    XSSFWorkbook workbook = new XSSFWorkbook(); // 创建工作簿
    XSSFSheet sheet = workbook.createSheet("Sheet1"); // 创建工作表
    XSSFRow row0 = sheet.createRow(0); // 创建第一行
    XSSFCell cell00 = row0.createCell(0); // 创建第一个单元格
    cell00.setCellValue("姓名"); // 设置单元格的值
    XSSFCell cell01 = row0.createCell(1); // 创建第二个单元格
    cell01.setCellValue("年龄"); // 设置单元格的值
    XSSFRow row1 = sheet.createRow(1); // 创建第二行
    XSSFCell cell10 = row1.createCell(0); // 创建第一个单元格
    cell10.setCellValue("张三"); // 设置单元格的值
    XSSFCell cell11 = row1.createCell(1); // 创建第二个单元格
    cell11.setCellValue(20); // 设置单元格的值
    XSSFRow row2 = sheet.createRow(2); // 创建第三行
    XSSFCell cell20 = row2.createCell(0); // 创建第一个单元格
    cell20.setCellValue("李四"); // 设置单元格的值
    XSSFCell cell21 = row2.createCell(1); // 创建第二个单元格
    cell21.setCellValue(25); // 设置单元格的值
    FileOutputStream fos = new FileOutputStream(filePath);
    workbook.write(fos); // 输出文件
    workbook.close(); // 关闭工作簿
    fos.close(); // 关闭输出流
}

在这段代码中,我们创建了一个 xlsx 文件,并在其中创建了一个名为 "Sheet1" 的工作表。接着,我们在表格中添加了三行数据,每行分别包含两个单元格。最后,我们将文件输出到指定的文件路径,并关闭工作簿和输出流来释放资源。

写入 xls 文件与写入 xlsx 文件基本相同,只需要将 XSSF 相关的代码改成 HSSF 就可以了。

五、总结

通过本文的讲解,读者可以初步了解 Apache POI 在 Java API 开发中的使用,特别是在 Excel 文件处理方面的应用。无论是读取 Excel 文件还是写入 Excel 文件,Apache POI 都提供了易于使用的接口,使得 Java 编程人员能够轻松地进行 Excel 文件的操作。同时,Apache POI 还支持 Word 和 PowerPoint 等 Office 文件的处理,是 Java 开发人员必备的一个工具库。

以上就是Java API 开发中使用 Apache POI 进行 Excel 处理的详细内容,更多请关注其它相关文章!