Apache POI è un'API popolare che consente ai programmatori di creare, modificare e visualizzare file MS Office utilizzando programmi Java. È una libreria open source sviluppata e distribuita da Apache Software Foundation per progettare o modificare file di Microsoft Office utilizzando il programma Java. Contiene classi e metodi per decodificare i dati di input dell'utente o un file in documenti MS Office.

Componenti di Apache POI

Apache POI contiene classi e metodi per lavorare su tutti i documenti OLE2 Compound di MS Office. Di seguito viene fornito l'elenco dei componenti di questa API.

  • POIFS(Poor Obfuscation Implementation File System) - Questo componente è il fattore di base di tutti gli altri elementi POI. Viene utilizzato per leggere diversi file in modo esplicito.

  • HSSF (Horrible Spreadsheet Format) - Viene utilizzato per leggere e scrivere il formato xls di file MS-Excel.

  • XSSF (Formato foglio di calcolo XML) - Viene utilizzato per il formato file xlsx di MS-Excel.

  • HPSF (Horrible Property Set Format) - Viene utilizzato per estrarre i set di proprietà dei file MS-Office.

  • HWPF (Horrible Word Processor Format) - Viene utilizzato per leggere e scrivere file con estensione doc di MS-Word.

  • XWPF (XML Word Processor Format) - Viene utilizzato per leggere e scrivere file con estensione docx di MS-Word.

  • HSLF (Formato orribile per il layout delle diapositive) - Viene utilizzato per leggere, creare e modificare le presentazioni di PowerPoint.

  • HDGF (Horrible DiaGram Format) - Contiene classi e metodi per i file binari di MS-Visio.

  • HPBF (Formato Horrible PuBlisher) - Viene utilizzato per leggere e scrivere file MS-Publisher.

È una classe di alto livello nel pacchetto org.apache.poi.hssf.usermodel. Implementa l'interfaccia della cartella di lavoro e viene utilizzato per i file Excel in formato .xls.

È una classe utilizzata per rappresentare i formati di file Excel di alto e basso livello. Appartiene al pacchetto org.apache.xssf.usemodel e implementa l'interfaccia della cartella di lavoro.

Questa è una classe nel pacchetto org.apache.poi.hssf.usermodel. Può creare fogli di calcolo Excel e consente di formattare lo stile del foglio e i dati del foglio.

Questa è una classe che rappresenta la rappresentazione di alto livello del foglio di calcolo Excel. È contenuto nel pacchetto org.apache.poi.hssf.usermodel.

Questa è una classe nel pacchetto org.apache.poi.xssf.usermodel. Implementa l'interfaccia Row, quindi può creare righe in un foglio di calcolo.

Questa è una classe nel pacchetto org.apache.poi.xssf.usermodel. Implementa l'interfaccia Cell. È una rappresentazione di alto livello delle celle nelle righe di un foglio di calcolo.

Questa è una classe nel pacchetto org.apache.poi.xssf.usermodel. Fornirà eventuali informazioni sul formato del contenuto in una cella di un foglio di calcolo. Fornisce anche opzioni per modificare quel formato. Implementa l'interfaccia CellStyle.

Questa è una classe nel pacchetto org.apache.poi.hssf.util. Fornisce colori diversi come classi annidate. Di solito queste classi annidate sono rappresentate utilizzando i propri indici. Implementa l'interfaccia Color.

Questa è una classe nel pacchetto org.apache.poi.xssf.usermodel. Implementa l'interfaccia Font e quindi può gestire diversi tipi di carattere in una cartella di lavoro.

Questa è una classe nel pacchetto org.apache.poi.xssf.usermodel. Implementa l'interfaccia Hyperlink. Viene utilizzato per impostare un collegamento ipertestuale al contenuto della cella di un foglio di calcolo.

Questa è una classe nel pacchetto org.apache.poi.xssf.usermodel. Implementa l'interfaccia CreationHelper. Viene utilizzato come classe di supporto per la valutazione delle formule e l'impostazione di collegamenti ipertestuali.

Questa è una classe nel pacchetto org.apache.poi.xsssf.usermodel. Implementa l'interfaccia PrintSetup. Viene utilizzato per impostare le dimensioni, l'area, le opzioni e le impostazioni della pagina di stampa.

Il seguente frammento di codice viene utilizzato per creare un foglio di calcolo.

//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook(); 

//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");

Il seguente frammento di codice viene utilizzato per creare una riga.

XSSFRow row = spreadsheet.createRow((short)1);

Il frammento di codice seguente viene utilizzato per creare una cella.

//create new workbook
XSSFWorkbook workbook = new XSSFWorkbook();

//create spreadsheet with a name
XSSFSheet spreadsheet = workbook.createSheet("new sheet");

//create first row on a created spreadsheet
XSSFRow row = spreadsheet.createRow(0);

//create first cell on created row
XSSFCell cell = row.createCell(0);

Tipi di cellule

Il tipo di cella specifica se una cella può contenere stringhe, valori numerici o formule. Una cella stringa non può contenere valori numerici e una cella numerica non può contenere stringhe. Di seguito sono riportati i tipi di celle, i loro valori e la sintassi del tipo.

Tipo di valore della cella Digitare Sintassi
Valore cella vuota XSSFCell.CELL_TYPE_BLANK
Valore della cella booleana XSSFCell.CELL_TYPE_BOOLEAN
Valore della cella di errore XSSFCell.CELL_TYPE_ERROR
Valore numerico della cella XSSFCell.CELL_TYPE_NUMERIC
Valore della cella stringa XSSFCell.CELL_TYPE_STRING

La classe XSSFCellStyle viene utilizzata per definire lo stile di una cella. Il seguente frammento di codice può essere utilizzato per impostare l'allineamento della cella su "In alto a sinistra".

XSSFCellStyle style1 = workbook.createCellStyle();
spreadsheet.setColumnWidth(0, 8000);
style1.setAlignment(XSSFCellStyle.ALIGN_LEFT);
style1.setVerticalAlignment(XSSFCellStyle.VERTICAL_TOP);
cell.setCellValue("Top Left");
cell.setCellStyle(style1);

La classe XSSFFont viene utilizzata per aggiungere un carattere a una cella. Il seguente frammento di codice può essere utilizzato per impostare il colore di sfondo di una cella su "Verde".

//Create a new font and alter it.
XSSFFont font = workbook.createFont();
font.setFontHeightInPoints((short) 30);
font.setFontName("IMPACT");
font.setItalic(true);
font.setColor(HSSFColor.BRIGHT_GREEN.index);

//Set font into style
XSSFCellStyle style = workbook.createCellStyle();
style.setFont(font);

La classe XSSFCellStyle può essere utilizzata per ruotare una cella. Il seguente frammento di codice può essere utilizzato per impostare l'allineamento del testo della cella su un angolo specificato.

//90 degrees
XSSFCellStyle myStyle = workbook.createCellStyle();
myStyle.setRotation((short) 90);
cell = row.createCell(5);
cell.setCellValue("90D angle");
cell.setCellStyle(myStyle);

XSSFCell.CELL_TYPE_FORMULA può essere utilizzato per la cella come cella della formula.

// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUM(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("SUM(C2:C3)");

XSSFCell.CELL_TYPE_FORMULA può essere utilizzato per la cella come cella della formula.

// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("POWER(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("POWER(C2:C3)");

XSSFCell.CELL_TYPE_FORMULA può essere utilizzato per la cella come cella della formula.

// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("MAX(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("MAX(C2:C3)");

XSSFCell.CELL_TYPE_FORMULA può essere utilizzato per la cella come cella della formula.

// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("FACT(C2)" );
cell = row.createCell(3);
cell.setCellValue("FACT(C2)");

XSSFCell.CELL_TYPE_FORMULA può essere utilizzato per la cella come cella della formula.

// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SQRT(C2)" );
cell = row.createCell(3);
cell.setCellValue("SQRT(C2)");

XSSFHyperlink può essere utilizzato per aggiungere un collegamento ipertestuale a una cella.

CreationHelper createHelper = workbook.getCreationHelper();
XSSFHyperlink link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_URL);
link.setAddress("http://www.tutorialspoint.com/" );
cell.setHyperlink((XSSFHyperlink) link);

Il seguente frammento di codice mostra la configurazione dell'area stampabile di un Excel utilizzando Apache POI.

XSSFWorkbook workbook = new XSSFWorkbook(); 
XSSFSheet spreadsheet = workbook
.createSheet("Print Area");

//set print area with indexes
workbook.setPrintArea(
   0, //sheet index
   0, //start column
   5, //end column
   0, //start row
   5 //end row
);

//set paper size
spreadsheet.getPrintSetup().setPaperSize(
XSSFPrintSetup.A4_PAPERSIZE);

//set display grid lines or not
spreadsheet.setDisplayGridlines(true);

//set print grid lines or not
spreadsheet.setPrintGridlines(true);