Apache POI – Overview

POI stands for Poor Obfuscation Implementation. Apache POI is an API provided by Apache Software Foundation for manipulating various file formats based upon Microsoft’s OLE2 Compound Document Format (OLE2) and Office Open XML standards (OOXML). In short, it is a pure Java library for reading and writing Microsoft Excel, Microsoft Word, and Microsoft PowerPoint files using Java.

Apache POI

What is OLE2?

OLE2 (Microsoft’s OLE2 Compound Document Format) is the older file format standard. This includes most Microsoft Office files such as XLS, DOC, and PPT as well as MFC serialization API-based file formats.

What is OOXML?

Office Open XML, also known as OpenXML or OOXML, is the new standard based on the XML file format found in Microsoft Office 2007 and 2008. The specification was developed by Microsoft and adopted by ECMA International as ECMA-376 in 2006. This includes file formats such as XLSX, DOCX, and PPTX. This also includes file formats of charts, diagrams, shapes, and other graphical material.

Apache POI – Components

The Apache POI project is the master project for developing pure Java to support file formats based on Microsoft’s OLE 2 Compound Document Format. OLE 2 Compound Document Format is used by Microsoft Office Documents, as well as by programs using MFC property sets to serialize their document objects.

Apache POI is also the master project for developing pure Java to support file formats based on Office Open XML (ooxml).

The following tables show the Apache POI components and their basic description:

ComponentDescription
POIFS (Poor Obfuscation Implementation File System) It is the oldest component of Apache POI. It is a pure Java implementation of the OLE 2 Compound Document Format.
HSSF (Horrible SpreadSheet Format) It is used to read and write MS-Excel 97 (-2003) file format (.xls)
XSSF (XML SpreadSheet Format)It is used to read and write MS-Excel XML (2007+) file format (.xlsx)
HSLF (Horrible Slide Layout Format)It is used to read and write MS-PowerPoint 97 (-2003) file format (.ppt)
XSLF (XML Slide Layout Format)It is used to read and write MS-PowerPoint (2007+) file format (.pptx)
HWPF (Horrible Word Processor Format)It is used to read and write MS-Word 97 (-2003) file format (.doc)
XWPF (XML Word Processor Format)It is used to read and write MS-Word (2007+) file format (.docx)
HDGF (Horrible DiaGram Format)It is used to read-only MS-Visio 97 (-2003) file format (.vsd)
XDGF (XML DiaGram Format)It is used to read-only MS-Visio (2007+) file format (.vsdx)
HPSF (Horrible Property Set Format)It is used to read and write a document’s properties file (title, author, date of last modification, etc.)
HPBF (Horrible PuBlisher Format)It is used to read-only Microsoft Publisher 98 (-2007) file format.
HSMF (Horrible Stupid Mail Format)Java API To Access Microsoft Outlook MSG Files
Common SSIt is a common Java API to read and write both MS-Excel files format .xls and .xlsx
Common SLIt is also a common Java API to read and write both MS-PowerPoint files format .ppt and .pptx

Apache POI – Required Maven artifactId for Component

The following tables show the relationships between Apache POI components and Maven repository tags:

ComponentMaven ArtifactId
POIFS, HPSF, HSSFpoi
HSLF, HWPF, HDGF, HPBF, HSMFpoi, poi-scratchpad
XSSF, XSLF, XWPF, XDGF, Common SSpoi, poi-ooxml
Common SLpoi, poi-scratchpad, poi-ooxml

Note: Maven artifactId poi is the core module which is required for the all Apache POI components.

Apache POI – Released Version History

VersionRelease Date
5.0.020 January 2021
4.1.2 14 February 2020
4.1.120 October 2019
4.1.09 April 2019
4.0.07 September 2018
3.1715 September 2017
3.1619 April 2017
3.1521 September 2016
3.142 March 2016
3.1329 September 2015
3.1211 May 2015
3.1121 December 2014
3.10.118 August 2014
3.108 February 2014
3.93 December 2012
3.826 March 2012
3.729 October 2010
3.614 December 2009
3.528 September 2009
3.219 October 2008
3.129 June 2008
3.0.24 February 2008
3.0.15 July 2007
3.018 May 2007
2.5.129 February 2004
2.026 January 2004
1.5.116 June 2002
1.56 May 2002
1.2.019 January 2002
1.1.04 January 2002
1.0.211 January 2002
1.0.14 January 2002
1.0.030 December 2001

Apache POI – Supported Java Version

  • Apache POI 4.0 and later require JDK version 1.8 or later.
  • Apache POI 3.11 and later 3.x versions require JDK version 1.6 or later.
  • Apache POI 3.5 to 3.10 required the JDK version 1.5 or later.
  • Apache POI versions prior to 3.5 required JDK 1.4+.

Share with friends

Leave a Comment

Your email address will not be published. Required fields are marked *