Java POI实现兼容2003和2007 Excel读写
需积分: 15 102 浏览量
更新于2024-09-07
收藏 7KB TXT 举报
"在Java编程中,处理Excel文件(尤其是与2003年和2007年版本兼容)是一项常见的任务。Apache POI库是实现这一功能的关键工具,它提供了一套API来读取和操作Microsoft Excel的两种主要格式:HSSF(针对Excel 2003,使用xls文件扩展名)和XSSF(Excel 2007及以上版本,使用xlsx文件扩展名)。以下代码片段展示了如何使用JavaPOI库来读取Excel文件并将其数据转换为可操作的对象列表,以适应这两种不同的格式。
首先,引入必要的Apache POI依赖项,包括`hssf`和`xssf`模块。如果文件是xls格式,我们使用`HSSFWorkbook`类,而如果是xlsx格式,则使用`XSSFWorkbook`。这里有一个名为`ReadExcel`的公共静态方法,用于处理文件读取:
```java
public static List<List<Object>> readExcel(File file) throws IOException {
String fileName = file.getName();
String extension = fileName.lastIndexOf(".") == -1 ? "" : fileName.substring(fileName.lastIndexOf(".") + 1);
if ("xls".equals(extension)) { // 检查是否为xls文件
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(file));
List<List<Object>> dataList = readWorkbook(workbook, HSSFRow.class, HSSFCell.class);
workbook.close(); // 关闭工作簿以释放资源
} else if ("xlsx".equals(extension)) { // 如果是xlsx文件
XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(file));
dataList = readWorkbook(workbook, XSSFRow.class, XSSFCell.class);
workbook.close();
} else {
throw new IllegalArgumentException("Unsupported file format: " + extension);
}
return dataList;
}
private static List<List<Object>> readWorkbook(HSSFWorkbook workbook, Class<? extends HSSFSheet> sheetClass, Class<? extends HSSFRow> rowClass) {
// 实现读取工作表、行和单元格的方法
// ...
// 这里可能包括遍历工作簿中的所有工作表,获取每一行的数据,将数据转换为对象列表,并将这些列表放入主列表中
// 使用HSSFRow和HSSFCell(对于xls)或XSSFRow和XSSFCell(对于xlsx)来操作单元格的值、日期等
// 示例:
List<List<Object>> dataList = new LinkedList<>();
for (HSSFSheet sheet : workbook.getSheets()) { // 或者XSSFSheet
for (HSSFRow row : sheet) { // 或者XSSFRow
List<Object> rowData = new LinkedList<>();
for (HSSFCell cell : row) { // 或者XSSFCell
// 读取单元格数据并转换类型
String value = cell.getStringCellValue();
// ... 处理日期、数值等
rowData.add(value);
}
dataList.add(rowData);
}
}
return dataList;
}
```
这个示例代码的核心是`readWorkbook`方法,它根据文件的格式选择正确的工作簿类(HSSFWorkbook或XSSFWorkbook),然后遍历工作簿的每个工作表,读取行和单元格的数据。注意,实际操作时可能需要对单元格数据进行适当的类型转换和格式处理,如日期的解析和格式化。通过这种方式,Java程序可以有效地处理不同版本的Excel文件,确保数据的一致性和兼容性。
2013-04-16 上传
2017-10-10 上传
2018-09-01 上传
2017-08-27 上传
103 浏览量
2018-01-17 上传
2018-05-27 上传
WilsonTsai
- 粉丝: 111
- 资源: 12
最新资源
- StarModAPI: StarMade 模组开发的Java API工具包
- PHP疫情上报管理系统开发与数据库实现详解
- 中秋节特献:明月祝福Flash动画素材
- Java GUI界面RPi-kee_Pilot:RPi-kee专用控制工具
- 电脑端APK信息提取工具APK Messenger功能介绍
- 探索矩阵连乘算法在C++中的应用
- Airflow教程:入门到工作流程创建
- MIP在Matlab中实现黑白图像处理的开源解决方案
- 图像切割感知分组框架:Matlab中的PG-framework实现
- 计算机科学中的经典算法与应用场景解析
- MiniZinc 编译器:高效解决离散优化问题
- MATLAB工具用于测量静态接触角的开源代码解析
- Python网络服务器项目合作指南
- 使用Matlab实现基础水族馆鱼类跟踪的代码解析
- vagga:基于Rust的用户空间容器化开发工具
- PPAP: 多语言支持的PHP邮政地址解析器项目