在使用Apache POI的getRow()方法时,如果返回null,尽管工作表中包含非空行,可能有以下几个原因:
你可能没有正确地从工作簿中获取工作表。请确保使用正确的工作表名称或索引来获取工作表对象。例如,使用workbook.getSheet("Sheet1")来获取名称为"Sheet1"的工作表。
你可能没有正确地指定行号。请确保使用正确的行号来获取行对象。行号应该从0开始计数。例如,使用sheet.getRow(0)来获取第一行的行对象。
工作表中的行可能是空行。getRow()方法将返回null,如果指定的行号没有被创建或者是空行。确保你正在获取包含数据的行。
下面是一个包含代码示例的解决方法:
import org.apache.poi.ss.usermodel.*;
public class ApachePOIExample {
public static void main(String[] args) {
Workbook workbook = WorkbookFactory.create(new File("example.xlsx")); // 从文件创建工作簿
Sheet sheet = workbook.getSheet("Sheet1"); // 获取工作表对象
int rowNum = 0; // 行号
Row row = sheet.getRow(rowNum); // 获取行对象
if (row != null) {
// 处理行数据
for (Cell cell : row) {
// 处理单元格数据
System.out.println(cell.getStringCellValue());
}
} else {
System.out.println("指定的行号不包含数据");
}
}
}
在上面的示例中,我们首先创建一个工作簿对象,然后从工作簿中获取指定名称的工作表。接下来,我们指定行号为0,并使用getRow()方法获取行对象。如果行对象不为空,我们可以处理行数据和单元格数据。否则,我们打印一条指定的行号不包含数据的消息。
请确保替换示例代码中的"example.xlsx"为你实际的Excel文件路径,并根据需要修改工作表名称和行号。