AI 요약
전직 GAFAM(M사) 기술직이었던 '호라이' 씨는 알다그램 입사 후 약 6개월간 엑셀 파일을 HTML로 고속 변환하는 기술 개발에 집중해왔습니다. 그는 외부 API나 네트워크 연결 없이도 작동하는 단독 개발 엔진인 'excel2html.jar'를 공개하며, 엑셀(.xlsx) 파일이 실제로는 ZIP 압축 파일이라는 점을 활용해 내부 XML 데이터를 직접 파싱하는 방식을 설명했습니다. 특히 5,000페이지 분량의 ISO 29500 국제 표준 사양을 분석하여 시트 데이터, 문자열(sharedStrings.xml), 스타일(styles.xml)을 효율적으로 매핑했습니다. 이는 기존 Apache POI의 속도 저하와 디자인 재현성 문제를 해결하기 위한 선택이었으며, 알다그램의 도전적인 개발 문화 속에서 'Wow' 상을 받는 등 기술적 성취를 이루었습니다.
핵심 인사이트
- 알다그램의 테크니컬 펠로우 '호라이' 씨가 입사 6개월 만에 엑셀-HTML 변환 엔진인
excel2html.jar를 단독 개발함. .xlsx확장자의 실체는 ZIP 파일이며, 내부의worksheets,media,sharedStrings.xml등의 구조를 직접 분석하여 데이터를 추출함.- 5,000페이지 이상의 방대한 분량을 가진 ISO 29500(Office Open XML) 국제 표준 규격을 기반으로 로직을 구현함.
- 기성 라이브러리인 Apache POI가 시각적 재현율이 낮고 처리 속도가 느리다는 단점을 보완하기 위해 자체 엔진을 구축함.
주요 디테일
java -jar excel2html.jar [파일명].xlsx [출력폴더]명령어를 통해 시트 수만큼의 HTML과 JSON 파일을 즉시 생성하며, 외부 API를 사용하지 않는 로컬 환경에서 구동됨.- 엑셀 시트 내 텍스트는
sharedStrings.xml에 인덱스 번호(예: 27번)로 저장되어 있으며, 이를 참조하여 실제 문자열을 매핑하는 방식을 취함. - 셀의 디자인 정보는
styles.xml의fontId,borderId등을 추적하여 CSS 스타일로 변환하며, 시스템에 없는 글꼴은 'Noto Sans JP' 등으로 대체하여 타협점을 찾음. - Apache POI는 전체를 대체하는 대신 EMF 형식의 이미지 파일을 읽는 등 특수한 용도로만 제한적으로 활용하여 성능을 최적화함.
- 저자는 알다그램의 문화에 대해 외인부대 같은 전직자에게도 친절하며, 도전적인 기술 개발을 지원하여 'Wow' 상을 수여하는 등 긍정적이라고 평가함.
향후 전망
- 독자적인 파싱 엔진을 통해 복잡한 엑셀 서식의 웹 재현성이 높아짐에 따라 현장 DX(디지털 전환) 서비스인 'KANNA'의 데이터 시각화 경쟁력이 강화될 것으로 보임.
- 대규모 오피스 문서를 웹 환경으로 변환해야 하는 서비스들 사이에서 라이브러리 의존도를 낮추고 성능을 극대화하는 직접 파싱 방식의 사례가 늘어날 것으로 예상됨.
출처:zenn.dev
