How to Read Excel File in Java

17 Mar 2025 | 6 分钟阅读

在本节中,我们将学习如何在 Excel 文件中读取数据。

在 Java 中,读取 Excel 文件不像读取 Word 文件那样,因为 Excel 文件中有单元格。JDK 不提供直接读取或写入 Microsoft Excel 或 Word 文档的 API。我们必须依赖第三方库 Apache POI。

什么是 Apache POI?

Apache POI (Poor Obfuscation Implementation) 是一个 Java API,用于以 .xls.xlsx 两种格式读取和写入 Microsoft 文档。它包含类和接口。Apache POI 库提供了两种读取 Excel 文件的实现:

  • HSSF (Horrible SpreadSheet Format) 实现: 表示一个处理 Excel 2003 或更早版本的 API。
  • XSSF (XML SpreadSheet Format) 实现: 表示一个处理 Excel 2007 或更高版本的 API。

Apache POI 中的接口和类

接口

  • Workbook: 表示一个 **Excel 工作簿**。它是一个由 HSSFWorkbookXSSFWorkbook 实现的接口。
  • Sheet: 是一个表示 **Excel 工作表**的接口。工作表是工作簿的核心结构,表示一个单元格网格。Sheet 接口扩展了 java.lang.Iterable<row>
  • Row: 也是一个表示电子表格 **行**的接口。Row 接口扩展了 java.lang.Iterable<cell>。有两个具体的类:HSSFRowXSSFRow
  • Cell: 是一个接口。它是电子表格行中 **单元格**的高级表示。HSSFCellXSSFCell 实现 Cell 接口。

XLS 类

  • HSSFWorkbook: 是一个代表 XLS 文件的类。
  • HSSFSheet: 是一个代表 XLS 文件中工作表的类。
  • HSSFRow: 是一个代表 XLS 文件工作表中行的类。
  • HSSFCell: 是一个代表 XLS 文件行中单元格的类。

XLSX 类

  • XSSFWorkbook: 是一个代表 XLSX 文件的类。
  • XSSFSheet: 是一个代表 XLSX 文件中工作表的类。
  • XSSFRow: 是一个代表 XLSX 文件工作表中行的类。
  • XSSFCell: 是一个代表 XLSX 文件行中单元格的类。

读取 XLS 文件数据的步骤

步骤 1: 在 Eclipse 中创建一个简单的 Java 项目。

步骤 2: 现在,在项目中创建一个 lib 文件夹。

步骤 3: 下载以下 jar 文件并添加到 lib 文件夹中

步骤 4: 设置类路径

右键单击项目 -> Build Path -> Add External JARs -> 选择所有上面的 jar 文件 -> Apply and close。

步骤 5: 现在创建一个名为 ReadExcelFileDemo 的类文件,并在文件中编写以下代码。

步骤 6: 创建一个名为 "student.xls" 的 Excel 文件,并在其中写入一些数据。


How to Read Excel File in Java

步骤 7: 保存并运行程序。

读取 Excel 文件(.xls)的示例

输出

Name        Age        Height		
Swarit      23.0        5"
Puneet      25.0        6'1"
Swastik     22.0        5'5"
Tejas       12.0        4'9"

读取 XLSX 文件

除文件格式外,所有步骤都保持不变。

表: employee.xslx


How to Read Excel File in Java

读取 Excel 文件(.xlsx)的示例

在此示例中,我们使用 XSSFWorkbook 类。

输出

Employee ID   Employee Name    Salary     Designation          Department	
1223.0         Harsh           20000.0    Marketing Manager    Marketing
3213.0         Vivek           15000.0    Financial Advisor    Finance	
6542.0         Krishna         21000.0    HR Manager           HR		
9213.0         Sarika          34000.0    Sales Manager       Sales 

从 Excel 文件(.xlsx)中读取特定单元格的值

表: EmployeeData.xlsx


How to Read Excel File in Java

示例

在以下示例中,我们读取第 2 行和第 2 列的值。行和列的计数从 0 开始。所以程序返回 "Software Engineer."。


How to Read Excel File in Java
 

输出

Software Engineer

如何在 Java 中读取 Excel 文件选择题

1. 在 Java 中,主要使用哪个库来读取 .xls 和 .xlsx 格式的 Excel 文件?

  1. APACHE PDFBOX
  2. APACHE POI
  3. JEXCEL
  4. ITEXT

答案:B)

解释: Apache POI 是一个强大的 Java 库,用于处理 Microsoft Office 文档,包括 .xls 和 .xlsx 格式的 Excel 文件。它提供了对读取、写入和操作 Excel 文件全面的支持。


2. 在 Apache POI 中,使用哪个方法从 Excel 文件打开工作簿?

  1. OPENWORKBOOK()
  2. READWORKBOOK()
  3. WORKBOOKFACTORY.CREATE()
  4. WORKBOOK.OPEN()

答案:C)

解释: WorkbookFactory.create() 是 Apache POI 中的一个方法,用于从 Excel 文件创建 Workbook 实例。它支持 .xls 和 .xlsx 格式,通过自动检测文件类型并返回相应的 Workbook 实例。


3. 在 Apache POI 中,使用哪个类来读取 Excel 工作表?

  1. SHEETREADER
  2. SHEET
  3. EXCELSHEET
  4. EXCELREADER

答案:B)

解释: Apache POI 中的 Sheet 接口表示工作簿中的 Excel 工作表。您可以使用 Workbook 实例的 getSheetAt(int index) 或 getSheet(String name) 方法来从 Excel 文件检索特定的工作表。


4. 如何使用 Apache POI 迭代工作表中的所有行?

  1. 使用 ITERATOR<ROW>
  2. 使用 LIST<ROW>
  3. 使用 MAP<ROW>
  4. 使用 ENUMERATION<ROW>

答案:A)

解释: 在 Apache POI 中,我们可以使用 Iterator<ROW> 来迭代工作表中的所有行。通过调用 Sheet 对象的 iterator() 方法来获取迭代器。它允许我们按顺序遍历工作表中的每一行。


5. DataFormatter 类的作用是什么?

  1. 用于格式化 Excel 中的日期
  2. 用于格式化 Excel 中的数值
  3. 将 Excel 单元格的值转换为字符串格式
  4. 为 Excel 单元格应用样式

答案:C)

解释: Apache POI 中的 DataFormatter 类会创建一个单元格值的格式化字符串表示,就像它在 Excel 中显示的那样。这对于以人类可读的格式显示单元格的内容非常有用,无论单元格的数据类型是什么(数字、日期等)。


下一个主题Java 教程