2014-09-04 2 views
-2

아직 POI가 새로 추가되었지만 Excel 통합 문서에서 단일 열만 반복하면됩니다. 예를 들어, 아래 표에서, 단지 0 열의 0-3 행이 될 A 열의 값을 원한다면이 작업을 수행하는 효율적인 방법이 있습니까? 내가 본 POI를 가진 모든 것은 매우 행 기반이었습니다. Apache POI - 단일 열 반복

____A__________B______ 
1| some | some | 
2| sample | other | 
3| text | stuff | 
4| here | here | 
______________________ 

나는 클 수있는 몇 가지 스프레드 시트를 가지고, 나는 성공적으로 시트 전체를 통해 반복 할 수 있지만, 난 그냥 이런 일을 처리하기위한 가장 좋은 방법을 알아 내려고 노력하고있어.

미리 감사드립니다.

+1

을 할 수있는 방법은, 무엇을 작동하지? SSCCE를 제공하십시오. – Opal

답변

2

불행히도 Excel에서 상속 된 개체 모델 때문에 행 개념을 반복하지 않아도 아파치 POI에 열 개념이 없습니다.

Here 예제와 함께 가능한 복제물. 여기

+0

고맙습니다. – pinkdevelops

0

당신이 그것을 이미 시도 무엇

for(Row r : datatypeSheet) 
      { 
       Iterator<Cell> headerIterator = r.cellIterator(); 
       Cell header = null; 
// table header row 
       if(r.getRowNum() == 0) 
       { 
        // getting specific column's index 

        while(headerIterator.hasNext()) 
        { 
         header = headerIterator.next(); 
         if(header.getStringCellValue().equalsIgnoreCase("A")) 
         { 
          AIndex = header.getColumnIndex(); 
         } 
         else if(header.getStringCellValue().equalsIgnoreCase("B")) 
         { 
          BIndex = header.getColumnIndex(); 
         } 
        } 
       } 
       else 
       { 
        Cell ACells = r.getCell(AIndex); 
        Cell BCells = r.getCell(BIndex); 
        if(ACells != null) 
        { 
         if(ACells.getCellType() == Cell.CELL_TYPE_STRING) 
         { 
          AData.add(ACells.getStringCellValue()); //arraylist storing A's data 
         } 
        } 
        if(BCells != null) 
        { 
         if(BCells.getCellType() == Cell.CELL_TYPE_STRING) 
         { 
          BData.add(BCells.getStringCellValue()); //arraylist storing B's data 
         } 
        } 
       } 
      }