2015-11-19 44 views
1

我正在寫一個Java程序,我想要檢索具有行標題的數據。我的Excel工作表看起來如下:如何迭代列以獲取Excel中的行標籤數據?

enter image description here

我已經寫了以下簡單的Java代碼來檢索順序基於行標題值:

.... 
try 
    { 
    fileSystem = new POIFSFileSystem (inpStrm); 

    HSSFWorkbook  workBook = new HSSFWorkbook (fileSystem); 
    HSSFSheet   sheet = workBook.getSheetAt(0); 
    int column = 1; 
    for(int i = 0;i <=3;i++){ 

     for(int j = 0;j<=3;j++){ 
      HSSFRow row = sheet.getRow(j); 
      System.out.print(row.getCell(column).getStringCellValue() + " "); 
     } 
     System.out.println(""); 
     column++; 
    } 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 
.... 

而且運行的代碼我的輸出來像下面後:

P1 M C1 Hyderabad  
P2 M C2 Pune  
P3 F C3 Pune  
P4 M C4 Hyderabad 

現在有沒有簡單可行的方法來做大型Excel工作表(50行標題)?

如果我使用具有上述四個屬性的POGO類,那麼如何從Excel中獲取具有值的對象列表?

+0

只是遍歷所有的行?我沒有看到你的代碼有什麼問題? – Gagravarr

+0

@Gagravarr感謝您的回覆:)。我的代碼沒有問題。我問是否有其他簡單的方法可以達到同樣的要求? – Madhusudan

+1

我建議使用'WorkbookFactory'來創建你的工作簿,'DataFormatter'來把單元格轉換成一個字符串,否則它看起來非常簡單和容易! – Gagravarr

回答

3

現在有沒有簡單和可行的方法來做大型Excel表(50行標題)相同?

你可以使用方法sheet.getLastRowNum()作爲條件你的for循環遍歷所有行和方法row.getLastCellNum()在第二循環中的所有單元格迭代中的特定行。

for(int rowNumber = 0; rowNumber < sheet.getLastRowNum(); rowNumber++) { 
    HSSFRow row = sheet.getRow(rowNumber); 

    for(int columnNumber = 0; columnNumber < row.getLastCellNum(); columnNumber++) { 
     HSSFCell cell = row.getCell(columnNumber); 
     if(cell != null) { 
      // do something with the cell 
     } 
} 

重要:代碼上面的第一至每一列,然後循環通過每一行。

相關問題