2015-03-31 22 views
0

我在迭代一行中的所有单元时遇到问题,我能够正确读取前4个单元格,并将所有单元格都作为空值休息。任何帮助表示赞赏 //下面是我使用当使用Apache POI库时,无法读取一行中的所有单元格值

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(); 
+0

你的代码运行在我的设置罚款。它可能是'QuestionObjBuilder'导致的问题?尝试使用简单的(仅数字)'xlsx'文件来查看是否有问题。 – senderj 2015-03-31 09:07:10

+0

您是否尝试过[读取关于遍历行和单元格的Apache POI文档](http://poi.apache.org/spreadsheet/quick-guide.html#Iterator)? – Gagravarr 2015-03-31 18:24:58

+0

感谢您的意见,我在迭代单元格时犯了一个错误。上面的代码也适合我。 – bps 2015-04-01 07:01:14

回答

0

如果你的目标是从读取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(); 
    } 
+0

如果您有文件,请勿使用输入流!请参阅[POI文档](http://poi.apache.org/spreadsheet/quick-guide.html#FileInputStream)为什么不是 – Gagravarr 2015-03-31 18:24:23

+0

感谢您的建议我将更新代码 – bps 2015-04-01 07:02:46

+0

@Gagravarr将会改变内存使用情况同时使用输入流而不是文件。 – 2015-04-01 09:15:17

相关问题