Apache POI로 Excel 업로드/다운로드
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 계층을 구현합니다.