2013-10-09 63 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()