如何在Java中使用apite poi中的rowiterator?

Ale*_*ich 4 java row hssf apache-poi

我尝试在java中使用apache poi读取excel文件,但Eclipse没有编译代码.

public class ReadExcel {

    public static void main(String[] args) throws IOException {

        FileInputStream file = new FileInputStream(new File("C:\\Users\\XXXXXXXXXXXXXXXXal\\042012.xls"));
        HSSFWorkbook wb = new HSSFWorkbook(file);
        HSSFSheet sheet = wb.getSheetAt(0);
        Iterator<Row> rowIterator = sheet.iterator();

        while (rowIterator.hasNext()) {

        Row row = rowIterator().next();      \\ THIS LINE GETS UNDERLINED BY ECLIPSE!!!
         Iterator<Cell> cellIterator = row.cellIterator();
            while(cellIterator.hasNext()) {

                Cell cell = cellIterator.next();

                        System.out.print(cell.getStringCellValue() + "\t\t");

                            }

        }
        file.close();
        FileOutputStream out =
            new FileOutputStream(new File("C:\\test.xls"));
        wb.write(out);
        out.close();
        }


    }
Run Code Online (Sandbox Code Playgroud)

Eclipse始终强调Row row = rowIterator().next();行.我不知道为什么?我怎样才能改进它?

axi*_*sty 9

问题不在于eclipse,而在于代码.您不能将作为变量的rowIterator视为方法.您不能使用()语法调用变量.

试试这个:

  public static void main(String[] args) throws IOException {
    FileInputStream file = new FileInputStream(new File("C:\\Users\\XXXXXXXXXXXXXXXXal\\042012.xls"));
    HSSFWorkbook wb = new HSSFWorkbook(file);
    HSSFSheet sheet = wb.getSheetAt(0);
    Iterator<Row> rowIterator = sheet.iterator();
    while (rowIterator.hasNext()) {
      Row row = rowIterator.next();
      Iterator <Cell> cellIterator = row.cellIterator();
      while (cellIterator.hasNext()) {
        Cell cell = cellIterator.next();
        System.out.print(cell.getStringCellValue() + "\t\t");
      }
    }
    file.close();
    FileOutputStream out =
      new FileOutputStream(new File("C:\\test.xls"));
    wb.write(out);
    out.close();
  }
Run Code Online (Sandbox Code Playgroud)


Mik*_*kus 6

您需要在rowIterator之后删除"()".

代替:

rowIterator().next();
Run Code Online (Sandbox Code Playgroud)

它应该是:

rowIterator.next()
Run Code Online (Sandbox Code Playgroud)


rge*_*man 5

在这一行:

Row row = rowIterator().next();
Run Code Online (Sandbox Code Playgroud)

您正在尝试调用rowIterator在您自己的类上调用的方法,这当然是您没有的.

从上下文来看,很明显你的意思是指rowIterator你已经拥有的变量.将其更改为:

Row row = rowIterator.next();  // No () on rowIterator
Run Code Online (Sandbox Code Playgroud)