
Java 读取 Excel 内容的方式包括:使用Apache POI库、使用JExcel API、使用EasyExcel库。 在实际开发中,Apache POI库是最常用的一个,它支持对Excel文件的读写操作,功能强大且稳定。接下来,我们将详细介绍如何通过Apache POI库来读取Excel文件中的内容,并探讨其他两种方法的基本使用和适用场景。
一、使用 Apache POI 库
Apache POI 是一个开源的 Java API,用于处理 Microsoft Office 文档,包括 Excel。它支持读取和写入 Excel 97-2003 (.xls) 和 Excel 2007+ (.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>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
2. 读取 Excel 文件
以下是一个简单的示例代码,展示如何使用 Apache POI 库读取 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 {
public static void main(String[] args) {
String excelFilePath = "path/to/your/excel/file.xlsx";
FileInputStream fis = null;
Workbook workbook = null;
try {
fis = new FileInputStream(new File(excelFilePath));
workbook = new XSSFWorkbook(fis);
// 获取第一个工作表
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:
if (DateUtil.isCellDateFormatted(cell)) {
System.out.print(cell.getDateCellValue() + "t");
} else {
System.out.print(cell.getNumericCellValue() + "t");
}
break;
case BOOLEAN:
System.out.print(cell.getBooleanCellValue() + "t");
break;
case FORMULA:
System.out.print(cell.getCellFormula() + "t");
break;
default:
System.out.print("Unsupported cell type" + "t");
break;
}
}
System.out.println();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) fis.close();
if (workbook != null) workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
3. 解析 Excel 数据
上面的代码展示了如何读取 Excel 文件中的内容,并根据不同的单元格类型(字符串、数字、布尔值、公式)进行不同的处理。可以根据具体需求进一步处理或解析这些数据。
二、使用 JExcel API
JExcel API 是另一个用于读取和写入 Excel 文件的 Java 库。它主要用于 Excel 97-2003 (.xls) 文件,不支持 Excel 2007+ (.xlsx) 文件。
1. 添加 JExcel API 依赖
在项目中添加 JExcel API 依赖。如果使用的是 Maven 项目,可以在 pom.xml 文件中添加以下内容:
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
2. 读取 Excel 文件
以下是一个简单的示例代码,展示如何使用 JExcel API 读取 Excel 文件中的内容:
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import java.io.File;
public class JExcelReader {
public static void main(String[] args) {
String excelFilePath = "path/to/your/excel/file.xls";
Workbook workbook = null;
try {
workbook = Workbook.getWorkbook(new File(excelFilePath));
Sheet sheet = workbook.getSheet(0);
for (int row = 0; row < sheet.getRows(); row++) {
for (int col = 0; col < sheet.getColumns(); col++) {
Cell cell = sheet.getCell(col, row);
System.out.print(cell.getContents() + "t");
}
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (workbook != null) {
workbook.close();
}
}
}
}
三、使用 EasyExcel 库
EasyExcel 是阿里巴巴开源的一个用于读取和写入 Excel 文件的 Java 库,具有性能高、内存占用低的特点,适合处理大规模数据。
1. 添加 EasyExcel 依赖
在项目中添加 EasyExcel 依赖。如果使用的是 Maven 项目,可以在 pom.xml 文件中添加以下内容:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
2. 读取 Excel 文件
以下是一个简单的示例代码,展示如何使用 EasyExcel 读取 Excel 文件中的内容:
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.read.listener.ReadListenerAdapter;
import java.util.List;
import java.util.Map;
public class EasyExcelReader {
public static void main(String[] args) {
String excelFilePath = "path/to/your/excel/file.xlsx";
EasyExcel.read(excelFilePath)
.sheet()
.doRead(new ReadListenerAdapter<Map<Integer, String>>() {
@Override
public void invoke(Map<Integer, String> data, AnalysisContext context) {
for (Map.Entry<Integer, String> entry : data.entrySet()) {
System.out.print(entry.getValue() + "t");
}
System.out.println();
}
});
}
}
四、比较与选择
1. Apache POI
优点:
- 支持 Excel 97-2003 (.xls) 和 Excel 2007+ (.xlsx) 文件。
- 功能强大,支持复杂的 Excel 操作,如公式计算、图表处理等。
- 社区活跃,文档和示例丰富。
缺点:
- 相对复杂,学习曲线较陡。
- 性能和内存消耗相对较高,不适合处理非常大的数据集。
2. JExcel API
优点:
- 简单易用,适合处理基本的 Excel 操作。
- 对 Excel 97-2003 (.xls) 文件有良好的支持。
缺点:
- 不支持 Excel 2007+ (.xlsx) 文件。
- 功能相对有限,不适合处理复杂的 Excel 操作。
3. EasyExcel
优点:
- 性能高,内存占用低,适合处理大规模数据。
- 简单易用,代码简洁。
缺点:
- 功能相对单一,主要用于读取和写入基本的 Excel 数据。
- 文档和社区相对不如 Apache POI 丰富。
五、总结
在 Java 中读取 Excel 文件有多种方式可选,Apache POI、JExcel API、EasyExcel 各有优缺点。Apache POI 功能强大,适合处理复杂的 Excel 操作;JExcel API 简单易用,适合处理基本的 Excel 97-2003 (.xls) 文件;EasyExcel 性能高,内存占用低,适合处理大规模数据。根据具体的项目需求和Excel文件的类型,选择合适的库是关键。
相关问答FAQs:
Q: 如何使用Java读取Excel文件中的内容?
A: Java提供了多种方法来读取Excel文件中的内容。以下是一种常见的方法:
Q: 如何使用Apache POI库来读取Excel文件中的内容?
A: Apache POI是一个流行的Java库,用于读取和写入Microsoft Office格式的文件,包括Excel。以下是使用Apache POI来读取Excel文件的步骤:
Q: 在Java中,如何读取Excel文件中的特定工作表?
A: 如果你只想读取Excel文件中的特定工作表,可以使用Apache POI库中的HSSFWorkbook类的getSheet方法来获取特定的工作表。以下是读取特定工作表的示例代码:
文章包含AI辅助创作,作者:Edit2,如若转载,请注明出处:https://docs.pingcode.com/baike/217064