用Java读取Excel文件及其文件名的详解

在现代程序开发中,Excel文件是数据存储和交换中非常常用的一种格式。Java作为一种广泛使用的编程语言,在处理Excel文件时有着丰富的库可供选择。通过本文,您将学习如何使用Java读取Excel文件以及获取文件名,并结合代码示例和类图进行深入分析。

1. 环境准备

在开始我们的示例之前,您需要确保您的开发环境中已添加以下依赖库:

  • Apache POI:这是一个强大的Java库,用于操作Microsoft Office文档,包括Excel文件。

如果您使用Maven作为项目管理工具,请在您的pom.xml文件中添加以下依赖:

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

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

在获取Excel文件中的数据和文件名之前,首先我们需要明确我们要处理的文件类型。通常我们可以遇到两种Excel文件格式:.xls(Excel 97-2003)和.xlsx(Excel 2007及以上)。

2.1 创建工作簿

下面是读取Excel文件的基本步骤:

  1. 创建一个工作簿(Workbook)对象。
  2. 读取工作表(Sheet)。
  3. 读取单元格(Cell)数据。
  4. 获取文件名。

2.2 样例代码

以下是一个示例代码,展示了如何读取Excel文件并获取文件名:

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

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

public class ExcelReader {
    private String filePath;

    public ExcelReader(String filePath) {
        this.filePath = filePath;
    }

    public void readExcel() throws IOException {
        FileInputStream fis = new FileInputStream(new File(filePath));
        Workbook workbook;
        
        // 根据文件后缀确定使用的工作簿类型
        if (filePath.endsWith(".xlsx")) {
            workbook = new XSSFWorkbook(fis);
        } else {
            // 为了简化,我们省略了.xls的处理
            throw new IllegalArgumentException("Unsupported file type");
        }

        Sheet sheet = workbook.getSheetAt(0); // 读取第一个工作表
        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("Unsupported Type\t");
                }
            }
            System.out.println();
        }

        workbook.close();
        fis.close();

        // 打印文件名
        System.out.println("File name: " + new File(filePath).getName());
    }

    public static void main(String[] args) {
        try {
            ExcelReader reader = new ExcelReader("example.xlsx");
            reader.readExcel();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. 类图分析

在理解代码之后,我们可以使用类图来描述类与类之间的关系。以下是用Mermaid语法绘制的ExcelReader类的类图:

classDiagram
    class ExcelReader {
        - String filePath
        + ExcelReader(String filePath)
        + void readExcel()
    }

这个类图简单明了地展示了ExcelReader类的属性和方法。

4. 使用和测试

创建一个名为example.xlsx的Excel文件,并在其中填入一些测试数据。确保您的Java代码能正确识别并读取这些数据。

示例表格

名称 年龄 性别
Alice 30
Bob 25
Charlie 35

在上述表格中,您可以创建一个包含不同数据类型的样例Excel文件,以测试读入的效果。

5. 结论

通过本文的学习,您了解了如何使用Java读取Excel文件及其文件名。我们使用了Apache POI库,这为操作Excel文件提供了强大的支持。本文中展示的代码示例可以帮助您快速上手并应用到自己的项目中。

处理Excel文件是许多应用中的重要功能,进一步的扩展如支持不同格式的Excel文件(如.xls),或是处理更多的单元格类型,都可以在此基础上实现。希望您能在今后的开发中,使用这些知识提升您的工作效率和编程技能。