Java Workbook如何读取XLSX文件

在Java中,处理Excel文件是一个常见的需求,尤其是XLSX格式的文件。为了完成这一任务,我们通常使用Apache POI库,它支持读取和写入各类Excel文件(包括XLS和XLSX格式)。本文将重点介绍如何使用Apache POI库中的Workbook类来读取XLSX文件,并附带详细的代码示例与类图说明。

1. 引入Apache POI依赖

在开始之前,我们需要确保项目中已经引入了Apache POI库的相关依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version> <!-- 请根据需要使用最新版本 -->
</dependency>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

2. 读取XLSX文件的基本步骤

读入XLSX文件的基本步骤如下:

  1. 创建FileInputStream来读取文件。
  2. 使用WorkbookFactory创建一个Workbook实例。
  3. 获取指定的Sheet
  4. 迭代行和单元格,读取数据。
  5. 关闭输入流。

3. 代码示例

下面的示例代码展示了如何使用Apache POI库读取一个XLSX文件的内容。

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

import java.io.FileInputStream;
import java.io.IOException;

public class ExcelReader {

    public void readExcel(String filePath) {
        FileInputStream fis = null;
        Workbook workbook = null;

        try {
            // 1. 创建文件输入流
            fis = new FileInputStream(filePath);
            // 2. 创建Workbook实例
            workbook = WorkbookFactory.create(fis);
            // 3. 获取第一个工作表
            Sheet sheet = workbook.getSheetAt(0);
            
            // 4. 迭代行
            for (Row row : sheet) {
                for (Cell cell : row) {
                    // 读取单元格的数据
                    switch (cell.getCellType()) {
                        case STRING:
                            System.out.print(cell.getStringCellValue() + "\t");
                            break;
                        case NUMERIC:
                            System.out.print(cell.getNumericCellValue() + "\t");
                            break;
                        case BOOLEAN:
                            System.out.print(cell.getBooleanCellValue() + "\t");
                            break;
                        default:
                            System.out.print("Unknown\t");
                    }
                }
                System.out.println();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 5. 关闭资源
            try {
                if (workbook != null) {
                    workbook.close();
                }
                if (fis != null) {
                    fis.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        ExcelReader excelReader = new ExcelReader();
        excelReader.readExcel("path/to/your/excel/file.xlsx"); // 更换为你的文件路径
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.

4. 类图说明

在上述代码中,核心类为ExcelReader,它主要负责读取和处理Excel文件。以下是该类的类图示例:

ExcelReader -FileInputStream fis -Workbook workbook +void readExcel(String filePath) +static void main(String[] args)

5. 代码逻辑解析

5.1 读取Excel文件

readExcel方法中,我们首先创建一个FileInputStream,并尝试从指定路径读取XLSX文件。接着使用WorkbookFactory.create(fis)来创建一个Workbook实例,自动识别文件类型。然后,我们选择获取第一个工作表以进行数据处理。

5.2 迭代和读取数据

接下来,我们使用增强型for循环迭代Sheet中的每一行和每一列。在读取每个Cell时,我们根据单元格的数据类型(字符串、数字、布尔值等)进行相应的处理并打印输出。处理这些数据后,数据将以表格的形式显示在控制台。

5.3 关闭资源

在最后的finally块中,我们确保关闭WorkbookFileInputStream,以避免内存泄漏。

6. 总结

通过上述示例,我们可以看到如何使用Apache POI库中的Workbook类读取XLSX格式的Excel文件。无论是简单的数据显示还是处理复杂的Excel数据,这种方式都非常有效。Apache POI功能强大,还支持其他Excel操作,例如写入文件、样式设置等,适用于各种商务和数据处理场景。如果你常常与Excel文件打交道,熟练掌握Apache POI无疑会给你的开发工作带来极大的便利。希望本文对你理解和使用Java读取XLSX文件有所帮助!