Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Apache POI
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Open-source API to access Microsoft Office formats}} {{Use mdy dates|date=May 2024}} {{Infobox software | name = Apache POI | logo = Apache_POI_project_logo_(2018).svg | screenshot = | caption = | developer = [[Apache Software Foundation]] | latest release version = 5.4.1 | latest release date = {{Start date and age|2025|4|6}}<ref>{{cite web |url=https://poi.apache.org/changes.html |title=History of Changes |access-date=2025-04-06}}</ref> | latest preview version = | latest preview date = | repo = {{URL|https://svn.apache.org/repos/asf/poi/|POI Repository}} | programming language = [[Java (programming language)|Java]] | operating system = [[Cross-platform]] | genre = [[API]] to access [[Microsoft Office]] [[file format|formats]] | license = [[Apache License 2.0]] | website = {{URL|https://poi.apache.org}} }} '''Apache POI''', a project run by the [[Apache Software Foundation]], and previously a sub-project of the [[Jakarta Project]], provides pure [[Java platform|Java]] libraries for reading and writing files in [[Microsoft Office]] [[file format|formats]], such as [[Microsoft Word|Word]], [[Microsoft PowerPoint|PowerPoint]] and [[Microsoft Excel|Excel]]. ==History and roadmap== The name was originally an [[acronym]] for "Poor Obfuscation Implementation",<ref name="javaworld2004">{{citation |last1=Sundaram |first1=Elango |date=2004-03-22 |df=dmy |url=https://www.infoworld.com/article/2072333/excelling-in-excel-with-java.html |title=Excelling in Excel with Java |work=[[JavaWorld]] |access-date=2020-07-21}}</ref> referring humorously to the fact that the file formats seemed to be deliberately [[Obfuscated code|obfuscated]], but poorly, since they were successfully [[reverse engineering|reverse-engineered]]. This explanation β and those of the similar names for the various sub-projects β were removed from the official web pages in order to better market the tools to businesses who would not consider such humor appropriate. The original authors ([[Andrew C. Oliver]] and Marc Johnson) also noted the existence of the Hawaiian [[poi (food)|poi]] dish, made of mashed [[taro root]], which had similarly derogatory connotations.<ref>{{citation |url=http://www.coyotesong.com/poi/ |archive-url=https://web.archive.org/web/20041015142404/http://www.coyotesong.com/poi/ |archive-date=2004-10-15 |title=POI homepage from October 2004 |publisher=Coyote Song}}, showing original explanations for naming.</ref> ===Office Open XML support=== POI supports the ISO/IEC 29500:2008 [[Office Open XML]] file formats since version 3.5. A significant contribution for OOXML support came from Sourcesense,<ref>{{citation |url=https://www.sourcesense.com/ |title=SourceSense}}</ref> an [[Open-source software|open source]] company which was commissioned by [[Microsoft]] to develop this contribution.<ref>{{cite web |last1=McDougall |first1=Paul |date=2008-03-26 |df=dmy |url=https://www.informationweek.com/microsoft-eyes-open-source-components-for-office-2007/d/d-id/1066089 |title=Microsoft Eyes Open Source Components for Office 2007 |work=[[InformationWeek]] |access-date=2020-07-21 }}</ref> This link spurred controversy, some POI contributors questioning POI OOXML patent protection regarding Microsoft's [[Open Specification Promise]] patent license.<ref>{{citation |last1=Oliver |first1=Andrew C. |date=2008-03-27 |df=dmy |url=https://mail-archives.apache.org/mod_mbox/poi-dev/200803.mbox/%3C47EAE71C.6040603@buni.org%3E |title=Rejection of any ENCUMBERED Microsoft Donation to POI |work=POI development mailing list archives |access-date=2020-07-21}}</ref> ==Architecture== The Apache POI project contains the following subcomponents (meaning of acronyms is taken from old documentation): * POIFS (Poor Obfuscation Implementation File System<ref name="javaworld2004"/>) β This component reads and writes [[Microsoft]]'s [[OLE 2]] [[COM Structured storage|Compound document]] format. Since all [[Microsoft Office]] files are [[OLE 2]] files, this component is the basic building block of all the other POI elements. POIFS can therefore be used to read a wider variety of files, beyond those whose explicit decoders are already written in POI. * HSSF (Horrible SpreadSheet Format<ref name="javaworld2004"/>) β reads and writes [[Microsoft Excel]] (XLS) format files. It can read files written by [[Microsoft Excel|Excel]] 97 onwards; this [[file format]] is known as the ''BIFF 8'' format. As the Excel file format is complex and contains a number of tricky characteristics, some of the more advanced features cannot be read. * XSSF (XML SpreadSheet Format) β reads and writes [[Office Open XML]] (XLSX) format files. Similar feature set to HSSF, but for Office Open XML files. * HPSF (Horrible Property Set Format<ref name="javaworld2004"/>) β reads "Document Summary" information from [[Microsoft Office]] files. This is essentially the information that one can see by using the ''File|Properties'' menu item within an [[Microsoft Office|Office]] application. * HWPF (Horrible Word Processor Format<ref name="apache1">{{cite web|url=https://poi.apache.org/apidocs/dev/ |title=POI API Documentation |publisher=Poi.apache.org |access-date=2019-03-07}}</ref>) β aims to read and write [[Microsoft Word|Microsoft Word 97]] (DOC) format files. This component is in initial stages of development. * XWPF (XML Word Processor Format<ref name="apache1"/>) β similar feature set to HWPF, but for Office Open XML files. * HSLF (Horrible Slide Layout Format<ref name="apache1"/>) β a pure Java implementation for [[Microsoft PowerPoint]] files. This provides the ability to read, create and edit presentations (though some things are easier to do than others) * XSLF (Open Office XML Slideshow Format) * HDGF (Horrible DiaGram Format<ref name="apache1"/>) β an initial pure Java implementation for [[Microsoft Visio]] binary files. It provides an ability to read the low level contents of the files. * HPBF (Horrible PuBlisher Format{{citation needed|date=March 2019}}) β a pure Java implementation for [[Microsoft Publisher]] files.<ref>{{cite web|url=https://poi.apache.org/components/hpbf/index.html |title=POI-HPBF - Java API To Access Microsoft Publisher Format Files |publisher=Poi.apache.org |access-date=2019-03-07}}</ref> * HSMF (Horrible Stupid Mail Format<ref>{{citation | url = http://npoi.codeplex.com/discussions/233518 | publisher = Microsoft | title = Codeplex NPOI|archive-url=https://web.archive.org/web/20120328092553/http://npoi.codeplex.com/discussions/233518|archive-date=2012-03-28}}</ref>{{Better source needed|date=January 2012|reason=[[WP:CIRCULAR]], as ref in source is this article}}) β a pure Java implementation for [[Microsoft Outlook]] MSG files.<ref> {{citation | title = POI-HSMF | publisher = Apache | url = http://poi.apache.org/hsmf/ | access-date = 2011-07-31 | archive-url = https://web.archive.org/web/20110807211225/http://poi.apache.org/hsmf/ | archive-date = 2011-08-07 | url-status = dead }} </ref> * DDF (Dreadful Drawing Format<ref name="apache1"/>) β a package for decoding the Microsoft Office Drawing format. * XDDF (XML Dreadful Drawing Format) The HSSF component is the most advanced feature of the library.<ref>{{citation | url = http://poi.apache.org/hssf/ | title = POI-HSSF | publisher = Apache}}</ref> Other components (HPSF, HWPF, and HSLF) are usable, but less full-featured.<ref>{{citation | url = http://poi.apache.org/hwpf/ | title = POI-HWPF | publisher = Apache}}</ref><ref>{{citation | url = http://poi.apache.org/hslf/ | title = POI-HSLF | publisher = Apache}}</ref> The POI library is also provided as a [[Ruby (programming language)|Ruby]]<ref>{{citation | title = POI-Ruby | publisher = Apache | url = http://poi.apache.org/poi-ruby.html}}</ref> or [[ColdFusion]] extension. There are modules for Big Data platforms (e.g. Apache Hive/Apache Flink/Apache Spark), which provide certain functionality of Apache POI, such as the processing of Excel files.<ref>{{cite web|url=https://github.com/ZuInnoTe/hadoopoffice/wiki |title=HadoopOffice for Hive/Flink/Spark |publisher=Github.com |date=2018-07-19 |access-date=2019-03-07}}</ref><ref>{{cite web|url=https://github.com/crealytics/spark-excel |title=Spark Excel |publisher=Github.com |access-date=2019-03-07}}</ref> == Version history == {{Version|l|show=11101}} {| class="wikitable" |- class="hintergrundfarbe5" ! Version number ! Date of release |- | {{Version |c |5.3.0}} | {{dts|2024|7|2}} |- | {{Version |o |5.2.0}} | {{dts|2022|1|14}} |- | {{Version |o |5.1.0}} | {{dts|2021|11|1}} |- | {{Version |o |5.0.0}} | {{dts|2021|1|20}} |- | {{Version |o |4.1.0}} | {{dts|2019|4|9}} |- | {{Version |o |4.0.0}} | {{dts|2018|9|7}} |- | {{Version |o |3.17}} | {{dts|2017|9|15}} |- | {{Version |o |3.16}} | {{dts|2017|4|19}} |- | {{Version |o |3.15}} | {{dts|2016|9|21}} |- | {{Version |o |3.14}} | {{dts|2016|3|2}} |- | {{Version |o |3.13}} | {{dts|2015|9|29}} |- | {{Version |o |3.12}} | {{dts|2015|5|11}} |- | {{Version |o |3.11}} | {{dts|2014|12|21}} |- | {{Version |o |3.10}} | {{dts|2014|2|8}} |- | {{Version |o |3.9}} | {{dts|2012|12|3}} |- | {{Version |o |3.8}} | {{dts|2012|3|26}} |- | {{Version |o |3.7}} | {{dts|2010|10|29}} |- | {{Version |o |3.6}} | {{dts|2009|12|14}} |- | {{Version |o |3.5}} | {{dts|2009|9|28}} |- | {{Version |o |3.2}} | {{dts|2008|10|19}} |- | {{Version |o |3.1}} | {{dts|2008|6|29}} |- | {{Version |o |3.0}} | {{dts|2007|5|18}} |- | {{Version |o |2.5}} | {{dts|2004|2|29}} |- | {{Version |o |2.0}} | {{dts|2004|1|26}} |- | {{Version |o |1.5}} | {{dts|2002|5|6}} |- | {{Version |o |1.2.0}} | {{dts|2002|1|19}} |- | {{Version |o |1.1.0}} | {{dts|2002|1|4}} |- | {{Version |o |1.0.0}} | {{dts|2001|12|30}} |} ==See also== *[[Open Packaging Conventions]] *[[Office Open XML software]] ==References== {{Reflist|2}} ==External links== * {{Official website}} {{Apache Software Foundation}} {{DEFAULTSORT:Apache Poi}} [[Category:Apache Software Foundation projects|POI]] [[Category:Microsoft Office-related software]] [[Category:Java platform]] [[Category:Java (programming language) libraries]] [[Category:Cross-platform free software]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Apache Software Foundation
(
edit
)
Template:Better source needed
(
edit
)
Template:Citation
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite web
(
edit
)
Template:Dts
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:Official website
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)
Template:Use mdy dates
(
edit
)
Template:Version
(
edit
)