Java操作Excel:读取.xls和.xlsx文件的特定列

3星 · 超过75%的资源 需积分: 50 78 下载量 30 浏览量 更新于2024-09-08 1 收藏 2KB TXT 举报
"这篇Java代码示例展示了如何获取Excel文件中的特定列,支持.xls和.xlsx两种格式。" 在Java编程中,Apache POI库被广泛用于处理Microsoft Office文档,包括Excel。以下代码片段展示了如何使用Apache POI读取并打印Excel文件中的一列数据。 首先,我们导入了必要的POI库类,包括`XSSFWorkbook`、`XSSFSheet`、`XSSFRow`和`XSSFCell`,这些类分别用于操作.xlsx格式的工作簿、工作表、行和单元格。 ```java import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; ``` 接着,我们在`main`方法中定义了Excel文件的路径,并创建了一个`FileInputStream`对象来读取文件。然后,我们通过`XSSFWorkbook`实例化一个工作簿对象,处理的是.xlsx格式的文件: ```java String path = "C:\\Users\\admin\\Desktop\\测试.xlsx"; InputStream iStream = new FileInputStream(path); XSSFWorkbook workbook = new XSSFWorkbook(iStream); ``` 为了处理.xls格式的文件,可以使用`HSSFWorkbook`,这部分在注释中给出,这里不再详细展开。 接下来,我们需要遍历工作簿中的每一张工作表: ```java for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) { XSSFSheet sheet = workbook.getSheetAt(numSheet); // ... } ``` 对于每个工作表,我们循环读取每一行,并获取该行的所有单元格: ```java for (int runNum = 0; runNum < sheet.getLastRowNum(); runNum++) { XSSFRow row = sheet.getRow(runNum); int minColIx = row.getFirstCellNum(); int maxColIx = row.getLastCellNum(); // 遍历该行,获取每个cell元素 for (int colIx = minColIx; colIx < maxColIx; colIx++) { XSSFCell cell = row.getCell(colIx); System.out.println(cell.getStringCellValue()); } } ``` 在这里,`getFirstCellNum()`和`getLastCellNum()`方法用于获取行中的第一个和最后一个单元格索引,然后我们遍历这些索引,获取并打印每个单元格的值。`getStringCellValue()`方法用于获取单元格的字符串值。 这个代码片段展示了基本的Excel数据读取操作,但实际应用中可能需要根据具体需求进行扩展,例如处理空单元格、数字、日期等不同类型的值,或者根据特定条件过滤和处理数据。同时,为了防止内存溢出,大文件操作时通常会使用`SXSSFWorkbook`来实现流式处理。