如何将按列读取Excel的Java POI代码修改为按行读取?
按行读取Excel的修改方案
没问题,我帮你把这段代码调整为按行读取的版本,核心是修改数组的维度结构和赋值时的索引对应关系,还顺手优化了原代码的潜在空指针问题,具体修改后的代码如下:
XSSFSheet TcSheet = workbook.getSheet(TestCaseName); int TcRow = TcSheet.getLastRowNum(); int TcCol = TcSheet.getRow(1).getLastCellNum(); // 调整数组维度:行数作为第一维度,列数作为第二维度,对应按行存储 data = new Object[TcRow + 1][TcCol]; for (int i = 0; i <= TcRow; i++) { for (int j = 0; j < TcCol; j++) { Cell cell = TcSheet.getRow(i).getCell(j); // 处理空单元格,避免空指针异常 if (cell != null) { cell.setCellType(Cell.CELL_TYPE_STRING); // 按行映射:第i行第j列的单元格值存入data[i][j] data[i][j] = cell.getStringCellValue(); } else { // 空单元格可根据需求赋值为空字符串或null data[i][j] = ""; } } }
关键修改点说明
- 数组维度重构:原代码是
[列数][行数]的列优先结构,现在改成[行数][列数]的行优先结构,这样data[i]直接对应Excel中的第i行数据,完全贴合按行读取的逻辑。 - 赋值索引调整:把原代码的
data[j][i]改为data[i][j],确保单元格的行号i对应数组的第一维度,列号j对应第二维度,数据映射关系更直观。 - 空单元格防护:新增了空单元格的判断逻辑,避免Excel中存在空单元格时抛出空指针异常(原代码没有处理这个场景,属于潜在bug)。
- 命名规范优化:把原代码中大写的
Cell变量名改成小写cell,符合Java的命名规范,可读性更好。
内容的提问来源于stack exchange,提问作者Prasanna Ananthakrishnan
相关产品推荐
相关产品推荐

