Java使用Apache POI读取Excel教程

需积分: 12 1 下载量 22 浏览量 更新于2024-09-15 收藏 56KB DOC 举报
"Java读取Excel的工具类实现" 在Java开发中,读取Excel文件是一个常见的需求,特别是在数据处理、报表生成或数据分析等场景。Apache POI 是一个流行的库,它允许Java程序操作Microsoft Office格式的文件,包括Excel(.xls 和 .xlsx)。本示例代码提供了一个名为 `ReadExcelUtil` 的工具类,用于读取Excel 97-2003 (.xls) 文件。 首先,我们看到类中定义了几个私有变量,如 `HSSFWorkbook` 对象 `wb` 代表工作簿,`HSSFSheet` 对象 `sheet` 表示工作表,`HSSFRow` 对象 `row` 表示行,以及 `sheetNum` 和 `rowNum` 分别用来存储当前操作的sheet和行的编号。此外,还有 `FileInputStream` 对象 `fis` 用于读取文件,以及 `File` 对象 `file` 存储文件路径。 `ReadExcelUtil` 类有两个构造器,一个无参构造器,另一个接受 `File` 对象,方便设置要读取的Excel文件。 类中的一些方法如下: 1. `open()` 方法:这个方法打开指定的Excel文件,创建 `HSSFWorkbook` 对象,并关闭输入流。它使用 `FileInputStream` 读取文件内容,然后通过 `POIFSFileSystem` 解析文件,最后创建 `HSSFWorkbook` 实例。 2. `getSheetCount()` 方法:返回工作簿中的工作表数量。虽然在示例代码中没有给出完整的实现,但通常会遍历 `HSSFWorkbook` 中的所有工作表并计算其数量。 为了使用这个工具类,你需要先实例化 `ReadExcelUtil`,然后调用 `open()` 方法打开Excel文件。之后,可以通过 `setSheetNum` 和 `setRowNum` 方法选择要读取的特定sheet和行,然后执行相应的读取操作。遗憾的是,示例代码并没有包含读取单元格数据的具体方法,但根据Apache POI的API,可以添加如下方法来获取指定单元格的数据: ```java public String getCellData(int sheetIndex, int rowIndex, int cellIndex) { sheet = wb.getSheetAt(sheetIndex); row = sheet.getRow(rowIndex); if (row != null) { HSSFCell cell = row.getCell(cellIndex); if (cell != null) { return cell.getStringCellValue(); } } return null; } ``` 这个方法接受sheet索引、行索引和单元格索引,返回对应单元格的字符串值。如果单元格类型不是字符串,可能需要进行类型转换。 在实际应用中,你可能还需要处理异常,例如文件不存在、无法读取或者非法格式的Excel文件。此外,对于更现代的Excel文件格式(.xlsx),你需要使用 `XSSFWorkbook` 和相关的 `XSSF` 类。Apache POI库提供了丰富的API,可以实现更复杂的Excel操作,如写入数据、格式化单元格、合并单元格等。