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