
백엔드
POI에서 DsExcel로: SpreadJS 연동 가이드
두줄요약
Apache POI의 메모리·수식·템플릿 처리 한계를 DsExcel과 SpreadJS 연동으로 비교했습니다. JSON 기반 무손실 서식 교환과 대용량·복잡 수식 처리 전략을 제시했습니다.
문제 상황
- Apache POI 기반 대용량 엑셀 처리에서 OOM·GC 스파이크와 스트리밍 제약
- 다중 헤더·트리형 템플릿·병합 셀 및 고급 수식의 수동 좌표·스타일 관리 부담
- SpreadJS 화면 서식과 백엔드 엑셀 간 동기화 과정의 손실·복잡성
구조와 흐름
- SpreadJS의 JSON 직렬화 결과를 DsExcel
fromJson으로 로드하고 데이터 바인딩·수식 재계산 수행 toJson또는 XLSX·PDF 렌더링으로 서버 처리 결과 전달- 비동기 큐 파이프라인과 try-with-resources 기반 워크북 자원 해제로 대용량 처리 안정성 관리
선택 이유
- DsExcel의 인메모리 최적화, 랜덤 액세스, Excel 호환 수식 엔진 및 선언형 템플릿 지원
- SpreadJS JSON 포맷 공유를 통한 헤더 스팬·조건부 서식·유효성 검사 규칙 보존
- 템플릿 마커 기반 동적 행 확장·셀 병합으로 트리형 데이터 생성 자동화
트레이드오프
- 단순·소규모·고정 양식 익스포트와 비용 제약 환경에서는 Apache POI 유지 가능
- WYSIWYG, 복잡한 템플릿, 서버 수식 검증, POI OOM 문제 환경에서는 DsExcel 전환 권장
- 오픈소스 Apache POI 대비 상용 라이선스 비용 고려 필요
