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.
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:
|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 SS||It is a common Java API to read and write both MS-Excel files format .xls and .xlsx|
|Common SL||It 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:
|POIFS, HPSF, HSSF||poi|
|HSLF, HWPF, HDGF, HPBF, HSMF||poi, poi-scratchpad|
|XSSF, XSLF, XWPF, XDGF, Common SS||poi, poi-ooxml|
|Common SL||poi, 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
|5.0.0||20 January 2021|
|4.1.2||14 February 2020|
|4.1.1||20 October 2019|
|4.1.0||9 April 2019|
|4.0.0||7 September 2018|
|3.17||15 September 2017|
|3.16||19 April 2017|
|3.15||21 September 2016|
|3.14||2 March 2016|
|3.13||29 September 2015|
|3.12||11 May 2015|
|3.11||21 December 2014|
|3.10.1||18 August 2014|
|3.10||8 February 2014|
|3.9||3 December 2012|
|3.8||26 March 2012|
|3.7||29 October 2010|
|3.6||14 December 2009|
|3.5||28 September 2009|
|3.2||19 October 2008|
|3.1||29 June 2008|
|3.0.2||4 February 2008|
|3.0.1||5 July 2007|
|3.0||18 May 2007|
|2.5.1||29 February 2004|
|2.0||26 January 2004|
|1.5.1||16 June 2002|
|1.5||6 May 2002|
|1.2.0||19 January 2002|
|1.1.0||4 January 2002|
|1.0.2||11 January 2002|
|1.0.1||4 January 2002|
|1.0.0||30 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+.
Apache POI – Getting started
To dive into the implementation of Apache POI API in java visit another article Apache POI – Getting Started.