엑셀 시트 복사하기(with POI) + 리팩터링
private void copySheet(HSSFSheet from, HSSFSheet to) {
HSSFRow firstRow = from.getRow(0);
HSSFRow secondRow = from.getRow(1);
HSSFRow thirdRow = from.getRow(2);
HSSFRow firstRow2 = to.createRow(0);
HSSFRow secondRow2 = to.createRow(1);
HSSFRow thirdRow2 = to.createRow(2);
Iterator<HSSFCell> iterator = firstRow.cellIterator();
short col = 0;
while(iterator.hasNext())
addCell(firstRow2, col++, iterator.next().getStringCellValue());
col = 0;
iterator = secondRow.cellIterator();
while(iterator.hasNext())
addCell(secondRow2, col++, iterator.next().getStringCellValue());
col = 0;
iterator = thirdRow.cellIterator();
while(iterator.hasNext())
addCell(thirdRow2, col++, iterator.next().getStringCellValue());
}
무려 세 번이나 중복되고 있지만, 일단 기능이 제대로 돌아가는지부터 보려고 허겁 지겁 코딩을 하고 결과를 확인해 보니 괜춘하네요. 여기서 그만 둘까도 생각했지만, 에이~ 뭐 시간도 많은데 저런걸 그냥 두긴 뭐하다 싶어서 리팩터링..
private void copySheet(HSSFSheet from, HSSFSheet to, int fromRowCnt, int toRowCnt) {
HSSFRow fromRow = null;
HSSFRow toRow = null;
for(int i = fromRowCnt ; i <= toRowCnt ; i++){
fromRow = from.getRow(i);
toRow = to.createRow(i);
Iterator<HSSFCell> iterator = fromRow.cellIterator();
short col = 0;
while(iterator.hasNext())
addCell(toRow, col++, iterator.next().getStringCellValue());
}
}
리팩터링 하는 김에 좀 더 Generic하게 만들어서 몇 번째 줄부터 몇 번째 줄까지 복사할지 인자로 넘겨주도록 수정 함. 이제 저 메소드는 ExcelUtils로 옮기면 ExelView쪽 코드는 약간 더 깔끔해지겠죠. 그건 뭐 간단하니 생략합니다.