HTMLDocument.Iterator 类型不是一般错误

Posted

技术标签:

【中文标题】HTMLDocument.Iterator 类型不是一般错误【英文标题】:The type HTMLDocument.Iterator is not generic error 【发布时间】:2015-09-05 13:10:31 【问题描述】:

我正在尝试使用 Apache POI 读取 .xlsx 文件。我添加到构建路径的jar文件是:

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 类型不是通用的;它不能用参数进行参数化

【问题讨论】:

你能发布你的导入吗?只是在我看来你输入了错误的类型 【参考方案1】:

您可以使用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);

【讨论】:

【参考方案2】:

您导入了错误的迭代器!

在您的导入部分中,您必须具有以下内容:

import blah.blah.HTMLDocument.Iterator;

您需要将其更改为正确的java.util.Iterator,例如

import java.util.Iterator;

您还犯了一些其他错误...作为explained here in the POI docs,如果您有File,请将其提供给POI,而不是FileInputStream

其次,可以使用for-each迭代,如detailed here in the docs,例如

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

那么你甚至不需要显式地使用迭代器来开始!

【讨论】:

以上是关于HTMLDocument.Iterator 类型不是一般错误的主要内容,如果未能解决你的问题,请参考以下文章

python中字符串数据类型是不可变数据类型

Python基础--可变数据类型与不可变数据类型

python中不可变数据类型和可变数据类型

可变类型与不可变类型的作用和意义

C语言 不允许使用不完整的类型

Python可变类型 Vs 不可变类型