Java利用POI读取Excel示例与解析
需积分: 10 189 浏览量
更新于2024-09-11
收藏 42KB DOC 举报
"这篇文档是关于使用Apache POI库在Java中读取Excel文件的示例程序。通过导入相应的jar包并使用特定的API,开发者可以实现对Excel文档的读取操作,对进行Excel开发的人员具有指导意义。"
Apache POI是一个流行的开源Java API,它允许开发人员创建、修改和显示Microsoft Office格式的文件,其中包括Excel。在这个例子中,我们将重点放在如何使用POI来读取Excel文件。
首先,确保在项目中引入了`poi-3.1-FINAL.jar`库。接着,在Java代码中,我们需要引入相关的包,例如`java.io`用于处理输入输出,以及`org.apache.poi`包,它是POI库的一部分,包含处理Excel文件所需的类。
以下是一个简单的读取Excel文件的Java程序:
```java
package demo.excel;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.eventusermodel.HSSFRequest;
import org.apache.poi.hssf.model.Sheet;
import org.apache.poi.hssf.model.Workbook;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class ExcelDemo {
public static void main(String[] args) {
File f = new File("f:/aa.xls");
if (f.exists()) {
try {
InputStream fis = new FileInputStream(f);
// 创建POIFSFileSystem对象,用于读取Excel文件
POIFSFileSystem poifs = new POIFSFileSystem(fis);
// 创建HSSFWorkbook对象,表示整个Excel工作簿
HSSFWorkbook wb = new HSSFWorkbook(poifs);
List<List<String>> retList = new ArrayList<>();
System.out.println("此文件中表的数量是:" + wb.getNumberOfSheets());
// 遍历每个工作表
for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
HSSFSheet sheet = wb.getSheetAt(sheetIndex);
System.out.println("当前工作表名称:" + sheet.getSheetName());
// 遍历每行数据
for (int rowIndex = 0; ; rowIndex++) { // 注意:终止条件通常为HSSFRow.getLastRowNum()+1
HSSFRow row = sheet.getRow(rowIndex);
if (row == null) break; // 如果行为空,跳出循环
List<String> rowData = new ArrayList<>();
// 遍历单元格数据
for (int cellIndex = 0; cellIndex < row.getLastCellNum(); cellIndex++) {
HSSFCell cell = row.getCell(cellIndex);
if (cell != null) {
String cellValue = getCellValue(cell);
rowData.add(cellValue);
}
}
retList.add(rowData);
}
}
// 关闭工作簿和输入流
wb.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("文件不存在!");
}
}
// 获取单元格的值
private static String getCellValue(HSSFCell cell) {
switch (cell.getCellType()) {
case STRING:
return cell.getStringCellValue();
case NUMERIC:
return String.valueOf(cell.getNumericCellValue());
// 处理其他类型的单元格值
// ...
}
return "";
}
}
```
在这个程序中,我们首先创建`POIFSFileSystem`对象来打开Excel文件,然后通过它创建`HSSFWorkbook`对象,该对象代表整个Excel工作簿。我们可以通过`getNumberOfSheets()`方法获取工作簿中的工作表数量,并使用`getSheetAt(int index)`来访问特定索引的工作表。
在遍历工作表的过程中,我们读取每一行(`HSSFRow`)和每个单元格(`HSSFCell`)。`HSSFRow.getLastCellNum()`返回行中最后一个非空白单元格的索引,`HSSFCell.getCellType()`确定单元格的类型(如字符串、数字等),并根据类型提取对应的值。
读取完成后,记得关闭工作簿和输入流以释放资源。这个例子中,读取到的数据被存储在一个二维列表中,方便后续处理。
Apache POI提供了一套丰富的API,使得Java开发者能够方便地处理Excel文件,包括读取、写入和修改数据,以及创建新的Excel文件。通过理解和应用这些API,你可以构建自己的Excel处理工具或集成到现有的业务系统中。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-09-13 上传
2022-11-14 上传
点击了解资源详情
2023-04-19 上传
2014-10-25 上传
2018-09-30 上传
hq8215
- 粉丝: 0
- 资源: 3
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍