Jump to content

Apache POI

From Alfawiki
Apache POI
Company typeOpen source software project
IndustrySoftware development
PredecessorJakarta Project
FounderAndrew C. Oliver, Marc Johnson
ProductsJava libraries for Microsoft Office file formats (Word, PowerPoint, Excel)
ParentApache Software Foundation

Apache POI, developed under the Apache Software Foundation and previously part of the Jakarta Project, provides pure Java libraries designed to read and write file formats from Microsoft Office, including Word, PowerPoint, and Excel documents.

History and roadmap

The acronym originally meant "Poor Obfuscation Implementation," highlighting how Microsoft Office file formats were intentionally obfuscated yet successfully reverse-engineered. This explanation, along with similar origins for sub-project names, was eventually removed from official documentation to better suit a corporate audience. The founders (Andrew C. Oliver and Marc Johnson) also drew inspiration from the Hawaiian poi dish, which carried a similarly casual reference.

Office Open XML support

Starting with version 3.5, POI added compatibility with ISO/IEC 29500:2008 Office Open XML standards. A significant enhancement for OOXML support was contributed by Sourcesense, an open source firm contracted by Microsoft. This collaboration led to discussions among POI developers regarding patent concerns and Microsoft's Open Specification Promise licensing terms.

Architecture

The Apache POI suite is composed of several primary modules:

  • POIFS (Poor Obfuscation Implementation File System) – responsible for reading and writing Microsoft's OLE 2 Compound Document format, which underpins all Microsoft Office files, enabling broad file type compatibility.
  • HSSF (Horrible SpreadSheet Format) – facilitates reading and writing Microsoft Excel (XLS) files starting from Excel 97 (BIFF 8 format). It supports many functionalities, although some advanced Excel features are not yet implemented.
  • XSSF (XML SpreadSheet Format) – handles Office Open XML (XLSX) files with capabilities comparable to HSSF.
  • HPSF (Horrible Property Set Format) – extracts document summary properties from Microsoft Office files, such as metadata accessible via the File|Properties menu.
  • HWPF (Horrible Word Processor Format) – focused on reading and writing Microsoft Word 97 (DOC) files; this module is still in early development.
  • XWPF (XML Word Processor Format) – provides support for Word processing in Office Open XML files, serving as a counterpart to HWPF.
  • HSLF (Horrible Slide Layout Format) – a Java-based implementation for Microsoft PowerPoint files that allows reading, creating, and modifying presentations.
  • XSLF (Open Office XML Slideshow Format)
  • HDGF (Horrible DiaGram Format) – an initial Java implementation for Microsoft Visio binary files that permits low-level content manipulation.
  • HPBF (Horrible PuBlisher Format) – Java API designed for handling Microsoft Publisher documents.
  • HSMF (Horrible Stupid Mail Format) – offers Java support for Microsoft Outlook MSG files.
  • DDF (Dreadful Drawing Format) – decodes the Microsoft Office Drawing format.
  • XDDF (XML Dreadful Drawing Format)

Among these components, HSSF stands out as the most developed and feature-complete. Modules such as HPSF, HWPF, and HSLF are operational but offer more limited functionality.

Apache POI also exists as extensions for Ruby and ColdFusion environments. Furthermore, it integrates with Big Data frameworks like Apache Hive, Flink, and Spark through dedicated modules that enable Excel file processing within these platforms.

Version history

Release Version Launch Date
Template:Version
  1. REDIRECT Template:Date table sorting
Template:Version
  1. REDIRECT Template:Date table sorting
Template:Version
  1. REDIRECT Template:Date table sorting
Template:Version
  1. REDIRECT Template:Date table sorting
Template:Version
  1. REDIRECT Template:Date table sorting
Template:Version
  1. REDIRECT Template:Date table sorting
Template:Version
  1. REDIRECT Template:Date table sorting
Template:Version
  1. REDIRECT Template:Date table sorting
Template:Version
  1. REDIRECT Template:Date table sorting
Template:Version
  1. REDIRECT Template:Date table sorting

See also

External links