2015-09-05 71 views
0

我正在尝试使用Apache POI读取.xlsx文件。我加入到构建路径的jar文件:HTMLDocument.Iterator类型不是通用错误

 
poi-3.12-20150511.jar 
poi-ooxml-3.12-20150511.jar 
poi-ooxml-schemas-3.12-20150511.jar 
xmlbeans-2.6.0.jar

我现在用的这个readFromExcel方法:

public void readFromExcel(){ 


    String excelFilePath = "Books.xlsx"; 
    FileInputStream inputStream = new FileInputStream(new File(excelFilePath)); 


    XSSFWorkbook workbook = new XSSFWorkbook(inputStream); 

    XSSFSheet firstSheet = workbook.getSheetAt(0); 

    Iterator<Row> iterator = firstSheet.iterator(); 


     while (iterator.hasNext()) { 
      Row nextRow = iterator.next(); 
      Iterator<Cell> cellIterator = nextRow.cellIterator(); 

      while (cellIterator.hasNext()) { 
       Cell cell = cellIterator.next(); 

       switch (cell.getCellType()) { 
        case Cell.CELL_TYPE_STRING: 
         System.out.print(cell.getStringCellValue()); 
         break; 
        case Cell.CELL_TYPE_BOOLEAN: 
         System.out.print(cell.getBooleanCellValue()); 
         break; 
        case Cell.CELL_TYPE_NUMERIC: 
         System.out.print(cell.getNumericCellValue()); 
         break; 
       } 
       System.out.print(" - "); 
      } 
      System.out.println(); 
     } 

     workbook.close(); 
     inputStream.close(); 

现在我流汗这两个错误:

类型HTMLDocument的.Iterator不是通用的;它不能用参数参数化 HTMLDocument.Iterator类型不是通用的;它不能用参数参数化

+0

你可以发布你的进口?只有它看起来像你输入了错误的类型 – Gagravarr

回答

0

您可以使用row.getCell()方法。 试试这个:

Workbook workbook = WorkbookFactory.create(yourFile.getInputstream()); 

Sheet sheet = workbook.getSheet(0);//1,2,3 

Iterator<Row> rowIterator = sheet.iterator(); 

     while (rowIterator.hasNext()) { 

      Row row = rowIterator.next(); 

      row.getCell(0); 
      row.getCell(1); 
} 
0

您已经导入了错误的迭代器!

在你的导入部分,你必须有这样的:

import blah.blah.HTMLDocument.Iterator; 

您需要更改为正确的一个,java.util.Iterator,如

import java.util.Iterator; 

你还做了一些其他的错误太...因为explained here in the POI docs,如果你有一个File,给那个POI,而不是FileInputStream

其次,你可以使用,每次迭代,为detailed here in the docs,如

for (Row row : sheet) { 
    for (Cell cell : row) { 
     ... 

然后,你甚至不需要明确地使用一个迭代开始!

相关问题