位置:excel百科网-关于excel知识普及与知识讲解 > 资讯中心 > excel百科 > 文章详情

java 怎么读取excel

作者:excel百科网
|
343人看过
发布时间:2026-01-12 19:40:06
标签:
Java 如何读取 Excel?在 Java 开发中,Excel 文件的读取是一个常见且实用的任务。无论是数据导入、报表生成,还是数据处理,Excel 文件的读取都发挥着重要作用。Java 提供了多种方式来读取 Excel 文件,其中
java 怎么读取excel
Java 如何读取 Excel?
在 Java 开发中,Excel 文件的读取是一个常见且实用的任务。无论是数据导入、报表生成,还是数据处理,Excel 文件的读取都发挥着重要作用。Java 提供了多种方式来读取 Excel 文件,其中最常用的是使用 Apache POI 这一开源库。本文将详细介绍 Java 如何读取 Excel 文件,并结合实际案例,提供实用的读取方法。
一、Java 读取 Excel 的核心方式
1.1 Apache POI 库
Apache POI 是 Java 中用于处理 Office 文件的开源库,支持读写 Excel(.xls 和 .xlsx)文件。它提供了丰富的 API,能够实现 Excel 文件的读取、写入、修改等操作。Apache POI 是 Java 处理 Excel 文件的首选方案。
1.2 读取 Excel 文件的基本步骤
读取 Excel 文件的步骤如下:
1.2.1 添加依赖
在项目中引入 Apache POI 的依赖。对于 Maven 项目,添加以下依赖:
xml

org.apache.poi
poi
5.2.3


org.apache.poi
poi-ooxml
5.2.3


1.2.2 创建 Workbook 对象
使用 `WorkbookFactory` 或 `XSSFWorkbook`、`HSSFWorkbook` 来创建 Workbook 对象,具体取决于文件类型(.xls 或 .xlsx)。
java
Workbook workbook = new XSSFWorkbook(new FileInputStream("data.xlsx"));

1.2.3 获取工作表
使用 `Workbook` 对象获取工作表:
java
Sheet sheet = workbook.getSheetAt(0);

1.2.4 遍历单元格
通过 `Row` 对象遍历每一行,使用 `Cell` 对象获取单元格内容:
java
Row row = sheet.getRow(0);
for (Cell cell : row)
if (cell != null)
String value = cell.toString();
System.out.println(value);


二、读取 Excel 文件的多种方式
2.1 使用 `Row` 和 `Cell` 遍历
这是最基础的方式,适用于读取单个工作表中的数据。通过 `Row` 和 `Cell` 实现逐行逐列读取。
2.1.1 读取数据
java
for (int i = 0; i < sheet.getRowCount(); i++)
Row row = sheet.getRow(i);
if (row == null) continue;
for (int j = 0; j < row.getCellCount(); j++)
Cell cell = row.getCell(j);
if (cell != null)
String value = cell.toString();
System.out.println("第" + (i + 1) + "行第" + (j + 1) + "列:" + value);



2.2 使用 `Row` 和 `Cell` 的 `getStringCellValue` 方法
对于字符串类型的单元格,可以使用 `getStringCellValue` 方法获取内容:
java
Cell cell = row.getCell(j);
String value = cell.getStringCellValue();

2.3 使用 `Row` 和 `Cell` 的 `getNumericCellValue` 方法
对于数值类型的单元格,可以使用 `getNumericCellValue` 方法获取数值:
java
Cell cell = row.getCell(j);
double value = cell.getNumericCellValue();

2.4 使用 `Row` 和 `Cell` 的 `getFormulaCellValue` 方法
对于公式类型的单元格,可以使用 `getFormulaCellValue` 方法获取计算结果:
java
Cell cell = row.getCell(j);
double value = cell.getFormulaCellValue();

三、读取 Excel 文件的高级方法
3.1 使用 `Row` 和 `Cell` 的 `getCellType` 方法
`getCellType` 方法可以获取单元格的类型,例如 `CellType.STRING`、`CellType.NUMERIC`、`CellType.BOOLEAN` 等。
java
Cell cell = row.getCell(j);
CellType type = cell.getCellType();
if (type == CellType.STRING)
String value = cell.getStringCellValue();
System.out.println("字符串类型:" + value);

3.2 使用 `Row` 和 `Cell` 的 `getRichTextCellValue` 方法
对于带有富文本格式的单元格,可以使用 `getRichTextCellValue` 方法获取内容:
java
Cell cell = row.getCell(j);
String value = cell.getRichTextCellValue();

3.3 使用 `Row` 和 `Cell` 的 `getNumericCellValue` 方法
对于数值类型的单元格,可以使用 `getNumericCellValue` 方法获取数值:
java
Cell cell = row.getCell(j);
double value = cell.getNumericCellValue();

四、读取 Excel 文件的注意事项
4.1 文件格式和编码问题
- `.xls` 文件使用 `HSSFWorkbook`,`.xlsx` 文件使用 `XSSFWorkbook`。
- 文件编码问题需要注意,建议使用 UTF-8 编码。
4.2 处理空行和空列
在读取 Excel 文件时,可能会遇到空行或空列,需要进行判断和处理。
java
Row row = sheet.getRow(i);
if (row == null) continue;
for (int j = 0; j < row.getCellCount(); j++)
Cell cell = row.getCell(j);
if (cell == null) continue;
String value = cell.toString();
System.out.println("第" + (i + 1) + "行第" + (j + 1) + "列:" + value);

4.3 处理跨行数据
对于跨行的数据,需要使用 `Row` 的 `getMergeCells` 方法来获取合并单元格的信息。
五、读取 Excel 文件的多种实现方式
5.1 使用 `Row` 和 `Cell` 遍历
这是最基础的方式,适用于读取单个工作表中的数据。
5.2 使用 `Row` 和 `Cell` 的 `getStringCellValue` 方法
适用于字符串类型的数据读取。
5.3 使用 `Row` 和 `Cell` 的 `getNumericCellValue` 方法
适用于数值类型的数据读取。
5.4 使用 `Row` 和 `Cell` 的 `getFormulaCellValue` 方法
适用于公式类型的数据读取。
六、读取 Excel 文件的代码示例
6.1 读取单个工作表的简单示例
java
import org.apache.poi.ss.usermodel.;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ExcelReader
public static void main(String[] args)
try
FileInputStream fis = new FileInputStream(new File("data.xlsx"));
Workbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0);
for (int i = 0; i < sheet.getRowCount(); i++)
Row row = sheet.getRow(i);
if (row == null) continue;
for (int j = 0; j < row.getCellCount(); j++)
Cell cell = row.getCell(j);
if (cell != null)
String value = cell.toString();
System.out.println("第" + (i + 1) + "行第" + (j + 1) + "列:" + value);



workbook.close();
catch (IOException e)
e.printStackTrace();



6.2 读取数值类型数据的示例
java
import org.apache.poi.ss.usermodel.;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ExcelReader
public static void main(String[] args)
try
FileInputStream fis = new FileInputStream(new File("data.xlsx"));
Workbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0);
for (int i = 0; i < sheet.getRowCount(); i++)
Row row = sheet.getRow(i);
if (row == null) continue;
for (int j = 0; j < row.getCellCount(); j++)
Cell cell = row.getCell(j);
if (cell != null)
double value = cell.getNumericCellValue();
System.out.println("第" + (i + 1) + "行第" + (j + 1) + "列:" + value);



workbook.close();
catch (IOException e)
e.printStackTrace();



6.3 读取公式类型数据的示例
java
import org.apache.poi.ss.usermodel.;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ExcelReader
public static void main(String[] args)
try
FileInputStream fis = new FileInputStream(new File("data.xlsx"));
Workbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0);
for (int i = 0; i < sheet.getRowCount(); i++)
Row row = sheet.getRow(i);
if (row == null) continue;
for (int j = 0; j < row.getCellCount(); j++)
Cell cell = row.getCell(j);
if (cell != null)
double value = cell.getFormulaCellValue();
System.out.println("第" + (i + 1) + "行第" + (j + 1) + "列:" + value);



workbook.close();
catch (IOException e)
e.printStackTrace();



七、读取 Excel 文件的常见问题与解决方案
7.1 文件读取失败
- 原因:文件路径错误、文件格式不支持、文件未正确关闭。
- 解决方案:确保文件路径正确,使用 `FileInputStream` 正确读取文件,并在读取完成后关闭 `FileInputStream`。
7.2 读取空行或空列
- 原因:Excel 文件中存在空行或空列,未被正确读取。
- 解决方案:在遍历 `$row` 时,检查是否为 `null`,并跳过。
7.3 读取跨行数据
- 原因:合并单元格导致读取异常。
- 解决方案:使用 `Row` 的 `getMergeCells` 方法获取合并单元格的信息。
八、读取 Excel 文件的总结与建议
Java 读取 Excel 文件的最常用方式是使用 Apache POI 库,其提供了丰富的 API 来实现数据读取、写入、修改等功能。在实际开发中,可以根据需求选择不同的读取方式,例如使用 `Row` 和 `Cell` 遍历读取数据,或使用 `getNumericCellValue`、`getStringCellValue` 等方法读取不同类型的数据。
在读取 Excel 文件时,需要注意文件格式、编码、文件路径、空行和空列等问题。同时,建议使用 `FileInputStream` 正确读取文件,并在读取完成后关闭资源,避免资源泄漏。
九、
Java 读取 Excel 文件是一项基础且实用的任务,Apache POI 是实现该任务的首选工具。通过合理使用 `Row` 和 `Cell` 的 API,可以高效地读取 Excel 文件中的数据,并根据需求处理不同类型的数据。在实际开发中,建议结合具体需求选择合适的方法,并注意常见问题的处理,以确保程序的稳定性和可靠性。
在 Java 开发中,Excel 文件的读取不仅是一项基础技能,更是提高数据处理效率的重要手段。掌握 Java 读取 Excel 的方法,能够显著提升开发效率,也为后续的数据分析和处理打下坚实基础。
推荐文章
相关文章
推荐URL
vb excel 自动换行的深度解析与实用技巧在Excel中,自动换行是一项非常实用的功能,能够帮助用户更高效地处理数据,提升工作效率。本文将从核心概念、操作步骤、应用场景、进阶技巧等多个方面,系统地讲解vb excel 自动换行的相
2026-01-12 19:38:30
52人看过
Excel中VLOOKUP函数的深度解析与实战应用在Excel中,VLOOKUP函数是一项基础而强大的数据查找工具,它能够帮助用户快速定位数据并进行匹配操作。无论是在财务报表、数据整理还是商业分析中,VLOOKUP都扮演着不可或缺的角
2026-01-12 19:38:22
189人看过
Python 修改 Excel 数据的深度解析与实践指南在数据处理领域,Excel 是一个被广泛使用的工具,尤其在数据预处理、分析和可视化中。然而,Excel 的操作方式相对单一,尤其在处理大量数据时,手动操作容易出错,效率也低。Py
2026-01-12 19:38:07
310人看过
vb excel 设置列宽的深度解析与实用指南在Excel中,列宽的设置是数据表展示和数据处理中一个基础且重要的操作。无论是为了提升表格的可读性,还是为了适应不同的数据格式,正确设置列宽都能显著提升工作效率。本文将从多个维度,详细讲解
2026-01-12 19:38:06
262人看过
热门推荐
热门专题:
资讯中心: