2013-10-09 50 views
3

我试图在java中使用apache poi读取excel文件,但是,Eclipse没有编译代码。如何在java中使用apache poi中的rowiterator?

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(); 
     } 


    } 

Eclipse始终强调Row row = rowIterator().next();一行。我不知道为什么?我该如何改进它?

+0

尝试从该行的行的行= rowIterator.next()除去支架;而不是它Row row = rowIterator()。next(); –

回答

8

问题与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(); 
    } 
4

在这一行:

Row row = rowIterator().next(); 

您正试图呼吁自己的类名为rowIterator方法,当然你没有。

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

Row row = rowIterator.next(); // No() on rowIterator 
4

您需要删除rowIterator后的“()”。

相反的:

rowIterator().next(); 

它应该是:

rowIterator.next()