2012-07-17 1 views
0

기존 엑셀 시트를 조작하기 위해 POI를 사용하고 있습니다.
처음부터 행을 제거하고 끝에 행을 추가하려고합니다. 행을 제거하면 모든 행이 그 다음에 이동합니다.POI removeRow 및 shiftRows는 시트 끝에서 빈 행을 남깁니다. 어떻게 삭제합니까?

int numOfRows = sheet.getLastRowNum()+1; 
int extraRows = numOfRows - maxAllowedRows;    
for(int i=1;i<=extraRows;i++){ //i intialized with 1 to ignore header row. 
    sheet.removeRow(sheet.getRow(i)); 
} 
sheet.shiftRows(extraRows+1,sheet.getLastRowNum(),-extraRows); 

현재 실행중인 프로그램에서는 문제가 없습니다. 그러나 프로그램이 다시 실행될 때 첫 번째 실행에서 제거되고 이동 된 행이 동일한 수의 빈 행이 시트 아래쪽에 표시되고 시트 아래쪽에 추가하려고 시도하는 모든 새 행이 빈 칸 다음에 추가됩니다 행.

내가는 ShiftRows 생각

답변

0

POI에 대한 전문 지식이 없기 때문에 두통을 겪고 있지만 빈 행 위에 새 행을 추가 할 수 있다는 점을 이해합니다. 빈 행의 시작 위치를 추적하고 HSSFSheet.addRow (색인)를 사용하여 행을 추가해야합니다.

0

비슷한 질문 Here

(즉 이 actaully 행을 삭제할 수있는 방법이 있습니까?) 제거 및 이동 작업 후 빈 행의 모양을 방지 할 수있는 방법이 있나요 방법 (지역? - 미안, 스프레드 시트 용어를 잊어 버렸습니다.)

+0

이 질문을 게시하기 전에 제공된 링크를 보았습니다. 내 prob는 약간 다릅니다. _ 엑셀을 읽고 나서 행을 추가해야하며 엑셀의 최대 행 수에 제한이 있습니다. 따라서 새 행을 추가하기 전에 행 수가 num을 초과하지 않는지 확인해야합니다. 그리고 그 경우 시트 상단의 행을 제거한 다음 맨 아래에 행을 추가해야합니다. 이제 내가 이렇게하면 처음에는 잘 작동합니다. 그러나 두 번째 실행에서는 필자가 제거하고 주먹으로 옮긴 채 채워진 행만큼 빈 행이 시트에 나타납니다. 그리고 새로 추가 된 행은 빈 행 뒤에 추가됩니다. – Abhishek