홈 › 실무 확장 › 02 / 22

Apache POI로 Excel 업로드/다운로드

섹션 7진행 0 / 22

7. 정리

  • POI 는 Workbook → Sheet → Row → Cell 객체 모델이고 인덱스는 0-base 다. 행과 셀은 null 일 수 있다. 행 번호는 getRowNum() + 1 또는 인덱스 루프로 계산한다.
  • 셀 타입은 화면과 다르다. 숫자처럼 보이는 문자열, 숫자로 저장된 날짜, 캐시 값을 가진 수식. getCellType() 으로 분기하거나 DataFormatter 로 보이는 값을 받아 우리 규칙으로 파싱한다.
  • CellStyle/Font 는 워크북 자원이다. 종류별로 한 번 만들어 재사용한다(64,000 한계). 공유 스타일을 수정하지 말고 cloneStyleFrom 한다.
  • 다운로드는 스타일 재사용 + 고정 너비 + 틀 고정 + 자동 필터 + 저장 전 evaluateAll(). 대용량은 SXSSFWorkbook — 힙이 창 크기에 비례하고 되돌아갈 수 없다.
  • 업로드는 헤더 검증 → 행 단위 검증 → 행 번호가 붙은 에러 목록 → 에러 XLSX 반환. 첫 오류에서 멈추지 않는다. 대용량은 이벤트 API 로 행 단위 스트리밍.
  • 템플릿을 내려주면 업로드 오류가 준다. 헤더 상수를 검증기와 템플릿이 공유한다.

다음 레슨 03. 파일 업로드/다운로드 서버 에서는 브라우저가 보낸 multipart 요청을 JDK 내장 HttpServer 로 받아 이 검증기에 넘기고, 생성한 XLSX 를 한글 파일명으로 내려주는 HTTP 계층을 구현합니다.