Il progetto Apache POI ha come obiettivo quello di creare delle API Java per poter manipolare i diversi formati su cui sono basati i documenti Office di Microsoft, in particolare l'API è in grado di manipolare file di tipo OOXML (Office Open XML) e di tipo OLE 2 (OLE 2 Compound Document). Lo standard OLE 2 comprende i file di Office con estensione XLS, DOC e PPT mentre lo standard OOXML comprende quelli con estensione XLSX, DOCX e PPTX.
Il progetto Apache POI ha come obiettivo quello di creare delle API Java per poter manipolare i diversi formati su cui sono basati i documenti Office di Microsoft, in particolare l’API è in grado di manipolare file di tipo OOXML (Office Open XML) e di tipo OLE 2 (OLE 2 Compound Document). Lo standard OLE 2 comprende i file di Office con estensione XLS, DOC e PPT mentre lo standard OOXML comprende quelli con estensione XLSX, DOCX e PPTX.
Le API per OLE 2 si appoggiano su API di livello più basso chiamate POIFS (OLE2 Filesystem) che serve per manipolare il contenuto del file, e HPSF (OLE2 Document Properties) che si occupa di manipolare le proprietà del file, quali il titolo o l’autore. Le API per OOXML si appoggiano invece sulla libreria openxmlj4. In ogni caso non ci troveremo ad usare queste librerie di basso livello ma utilizzeremo quelli che vengono chiamati “componenti”.
Per ogni applicazione Office esiste un suo componente, che fornisce una API di livello più alto di astrazione per manipolare i file in formato OLE 2 e OOXML. Per Excel i moduli sono HSSF (per OLE 2) e XSSF (per OOXML) ed esiste un modulo per manipolare entrambi i formati che si chiama SS, per Word sono HWPF e XWPD mentre per PowerPoint sono HSLF e XSLF.
Ultimamente è stato incluso il supporto preliminare per Outlook (HSMF), Visio (HDGF) e Pubblisher (HPBF).
Il progetto Apache POI è alla base di altri progetti Apache quali Lucene, di cui abbiamo parlato in questo articolo, e Tika.
Possiamo scaricare le API come pacchetto zip o tar all’indirizzo:
http://poi.apache.org/download.html
tale archivio comprende diversi jar file che non sono tutti necessari ma dipendono dal formato e dal tipo di file che vogliamo utilizzare secondo questo schema:
Componente | Tipo di file | File .jar |
POIFS | OLE2 FileSystem | poi-version-yyyymmdd.jar |
HPSF | OLE2 Property Set | poi-version-yyyymmdd.jar |
HSSF | Excel XLS | poi-version-yyyymmdd.jar |
HSLF | PowerPoint PPT | poi-scratchpad-version-yyyymmdd.jar |
HWPF | Word DOC | poi-scratchpad-version-yyyymmdd.jar |
HDGF | Visio VSD | poi-scratchpad-version-yyyymmdd.jar |
HPBF | Pubblisher PUB | poi-scratchpad-version-yyyymmdd.jar |
HSMF | Outlook MSG | poi-scratchpad-version-yyyymmdd.jar |
XSSF | Excel XLSX | poi-ooxml-version-yyyymmdd.jar |
XSLF | PowerPoint PPTX | poi-ooxml-version-yyyymmdd.jar |
XWPF | Word DOCX | poi-ooxml-version-yyyymmdd.jar |
OpenXML4J | OOXML | poi-ooxml-schemas-version-yyyymmdd.jarooxml-schemas-version-yyyymmdd.jar |
Inoltre questi jar hanno a loro volta dei jar come prerequisiti:
File .jar | Prerequisiti |
poi-version-yyyymmdd.jar | commons-logging, log4j |
poi-scratchpad-version-yyyymmdd.jar | poi-version-yyyymmdd.jar |
poi-ooxml-version-yyyymmdd.jar | poi-version-yyyymmdd.jar, poi-version-yyyymmdd.jar |
poi-ooxml-schemas-version-yyyymmdd.jar | xmlbeans, geronimo-stax-api_1.0_spec |
ooxml-schemas-version-yyyymmdd.jar | xmlbeans, geronimo-stax-api_1.0_spec |
COMMENTS