아파치 POI(Apache POI)는 아파치 소프트웨어 재단(Apache Software Foundation)이 관리하는 오픈 소스 프로젝트로, 순수 자바(Java) 라이브러리를 통해 마이크로소프트 오피스 파일 형식(Word, PowerPoint, Excel 등)을 읽고, 쓰고, 조작할 수 있는 API를 제공한다. 이전에는 자카르타 프로젝트(Jakarta Project)의 하위 프로젝트로 운영되기도 하였다.
명칭의 유래
POI라는 이름은 원래 "Poor Obfuscation Implementation"(빈약한 난독화 구현)의 약자였다. 이는 마이크로소프트 오피스 파일 형식이 의도적으로 난독화되어 있었으나, 그 난독화가 빈약하여 결국 역공학(reverse engineering)에 성공했다는 사실을 풍자적으로 가리킨 것이다. 그러나 이러한 유래는 비즈니스 환경에서 적절하지 않다는 판단에 따라 공식 웹페이지에서 삭제되었다. 또한 하와이 음식인 포이(poi, 토란 뿌리로 만든 음식)와의 유사성도 언급된 바 있다.
구성 요소
아파치 POI 프로젝트는 다음과 같은 하위 구성 요소로 이루어져 있다. 각 구성 요소의 약어는 초기 문서에서 유래한 유머러스한 명칭을 포함한다.
- POIFS (Poor Obfuscation Implementation File System): 마이크로소프트 OLE 2 복합 문서 형식을 읽고 쓴다. 모든 마이크로소프트 오피스 파일의 기본 구성 요소이다.
- HSSF (Horrible SpreadSheet Format): 엑셀 97 이후의 XLS 형식(BIFF 8 형식) 파일을 읽고 쓴다.
- XSSF (XML SpreadSheet Format): Office Open XML 형식(XLSX) 파일을 읽고 쓴다.
- HPSF (Horrible Property Set Format): 마이크로소프트 오피스 파일의 문서 요약 정보를 읽는다.
- HWPF (Horrible Word Processor Format): 마이크로소프트 워드 97(DOC) 형식 파일을 읽고 쓴다.
- XWPF (XML Word Processor Format): Office Open XML 형식의 워드 파일을 처리한다.
- HSLF (Horrible Slide Layout Format): 마이크로소프트 파워포인트 파일을 위한 순수 자바 구현체이다.
- XSLF (Open Office XML Slideshow Format): Office Open XML 형식의 프레젠테이션 파일을 처리한다.
- HDGF (Horrible DiaGram Format): 마이크로소프트 비지오(Visio) 바이너리 파일을 위한 초기 구현체이다.
- HPBF (Horrible PuBlisher Format): 마이크로소프트 퍼블리셔(Publisher) 파일을 위한 순수 자바 구현체이다.
- HSMF (Horrible Stupid Mail Format): 마이크로소프트 아웃룩 MSG 파일을 위한 순수 자바 구현체이다.
- DDF (Dreadful Drawing Format): 마이크로소프트 오피스 드로잉 형식을 디코딩하는 패키지이다.
- XDDF (XML Dreadful Drawing Format): XML 기반 드로잉 형식을 처리한다.
이 중 HSSF 구성 요소가 가장 성숙도가 높으며, 나머지 구성 요소는 상대적으로 기능이 제한적이다.
주요 특징
아파치 POI는 버전 3.5부터 ISO/IEC 29500:2008 Office Open XML 파일 형식을 지원한다. OOXML 지원을 위한 주요 기여는 오픈 소스 회사인 Sourcesense를 통해 이루어졌으며, 이는 마이크로소프트의 의뢰로 개발되었다. 이로 인해 일부 POI 기여자들 사이에서 특허 보호 문제에 대한 논란이 제기되기도 하였다.
아파치 POI 라이브러리는 자바 외에도 Ruby나 ColdFusion 확장으로도 제공되며, Apache Hive, Apache Flink, Apache Spark 등 빅데이터 플랫폼을 위한 모듈도 존재한다.
라이선스
아파치 라이선스 2.0(Apache License 2.0)에 따라 배포된다.
최신 버전
2025년 11월 30일 기준 최신 안정 버전은 5.5.1이며, 2026년 출시 예정인 6.0.0이 개발 중이다.