有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Apache POI库时,java无法读取一行中的所有单元格值

当迭代一行中的所有单元格时,我遇到了一个问题,我能够正确地读取前4个单元格,其余所有单元格都为空。谢谢你的帮助 //下面是我正在使用的代码

InputStream is = new FileInputStream(new File(fileName));
    Workbook workbook = new XSSFWorkbook(is);
    int numberOfSheets = workbook.getNumberOfSheets();
    for (int i = 0; i < numberOfSheets; i++) {
      Sheet sheet = workbook.getSheetAt(i);
      String name = sheet.getSheetName();
      if (name.equals(sheetName)) {
        Iterator<Row> rowItr = sheet.rowIterator();
        while (rowItr.hasNext()) {
          Row eachRow = rowItr.next();
          QuestionObjBuilder builder = new QuestionObjBuilder();
          Iterator<Cell> cellItr = eachRow.cellIterator();
          int index = 1;
          while (cellItr.hasNext()) {
            Cell eachCell = cellItr.next();
            int cellType = eachCell.getCellType();
            String label = "";
            if (cellType == Cell.CELL_TYPE_STRING) {
              label = eachCell.getStringCellValue();
            } else if (cellType == Cell.CELL_TYPE_NUMERIC) {
              int value = (int) eachCell.getNumericCellValue();
              label = String.valueOf(value);
            }
            builder = builder.set(index, label);
            index++;
            if (index > 10) {
              break;
            }
          }
        }
      }

    }
    workbook.close();

共 (1) 个答案

  1. # 1 楼答案

    如果您的目标是从excel中读取所有单元格,则可以使用此代码

    FileInputStream fileInputStream = new FileInputStream(fileName);
            HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);
            HSSFSheet worksheet = workbook.getSheet(sheetName);
    
            Iterator<Row> it = worksheet.rowIterator();
            while(it.hasNext()){
                HSSFRow r = (HSSFRow) it.next();
                Iterator<Cell> it1=r.cellIterator();
                while(it1.hasNext()){
                    HSSFCell cell = (HSSFCell)it1.next();
                    System.out.println("Row: "+cell.getRowIndex()+" ,Column: "+cell.getColumnIndex());
                    System.out.println(cell);
                }
                System.out.println();
            }
    
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }