2011-05-19 79 views
0

我想讀取一個電子表格的表單使用foor循環。我想知道這是讀特別是用表歡迎使用屬性的正確方法[代碼高亮]:閱讀多個Excel表格

Cell[][] newcell=new Cell[200][200]; 
int newsheet = workbook1.getNumberOfSheets(); 
for (int q=1;q < newsheet;q++)  
{ 
    for(int p=0;p < sheet(q).getColumns();p++) 
    { 
     for(int p1=0;p1<sheet(q).getRows();p1++) 
         /*^^^^^^^^^*/ 
     { 
       newcell[p][p1] = sheet(q).getCell(p, p1); 
           /*^^^^^^^^^*/ 
       if(newcell[p][p1].equals(saved[j])) 
       { 
        System.out.print(newcell[p][0]); 
       } 
      } 
    } 
} 

我可以使用表()爲片(Q)的,因爲它的投擲NullPointerExeption的財產?

+0

*,其中*你得到一個NullPointerException? – 2011-05-19 09:30:58

+0

@Andreas_D for(int p1 = 0; p1 user756742 2011-05-19 09:36:17

+0

@ user756742 - 你的自定義'sheet(int i)'方法裏面肯定有錯誤。 'sheet(q)'有時會返回一個對象,有時會返回'null'作爲'q'的相同值 - 這不應該發生。 – 2011-05-19 09:42:50

回答

3

一貫的風格與POI中的所有單元格的工作是:

for(int sheetNum=0; sheetNum < wb.getNumberOfSheets(); sheetNum++) { 
    Sheet sheet = wb.getSheetAt(sheetNum); 
    for (Row row : sheet) { 
     for (Cell cell : row) { 
      // Do something here 
     } 
    } 
} 

你的代碼也許切換到更多的東西一樣嗎?

+0

@Gagravarr:我需要wat在這裏的Row是否意味着我需要導入一些包?我正在使用Eclipse,並且已經導入了Jxl.jar,但是這並沒有提供任何類似的內容。 – user756742 2011-05-19 10:02:46

+0

你在使用什麼庫?你的問題用Apache POI標記,這就是這個答案所指的,但現在你提到JXL? – Gagravarr 2011-05-19 10:28:51

+0

@Gagravvr - 我已經在Java下進行了標記,反正..我得到這個錯誤代碼「只能迭代一個數組或java.lang.Iterable的實例」爲foor循環中的表單[for(Row row:sheet )]我怎麼過來呢? – user756742 2011-05-19 10:57:06

0

隨着JXLJExcelAPI),這應該工作:

for (Sheet sheet:workbook1.getSheets()) { // getSheet() returns a Sheet[] 
    int numCols = sheet.getColumns();  // getColumns() returns an int 
    for(for int i = 0; i <= numCols; i++) { 
    Cell[] column = sheet.getColumn(i); 
    for(Cell cell:column) {    // column is a Cell[] 
     if(cell.equals(saved[j])) { 
      System.out.print(cell); 
     } 
    } 
    } 
} 
+0

我得到這個錯誤代碼「只能遍歷一個數組或java.lang.Iterable的實例」爲foor循環中的表格[for(Cell [] column:sheet.getColumns( ))]我怎麼過來呢?對於Jxl也是.. :( – user756742 2011-05-20 05:50:32

+0

@ user756742 - 我不知道你在做什麼JavaDoc for JExcelApi清楚地告訴我,'jxl.Workbook#getSheets()'返回一個'Sheet'實例的數組,所以首先for循環**將**工作(假設,'workbook1'是'jxl.Workbook'類型 - 希望您不要混合Apache POI和jExcelAPI/jxl ...) – 2011-05-20 06:14:24

+0

我沒有混合Apache POI和Jxl API .. 。我正在宣佈工作簿爲 Workbook workbook1 = Workbook.getWorkbook(new File(「filenamepath」));並且導入了jxl.Wookbook,我希望只能使用jxl.workbook類型 – user756742 2011-05-20 06:47:57