Apache POI est une API populaire qui permet aux programmeurs de créer, modifier et afficher des fichiers MS Office à l'aide de programmes Java. Il s'agit d'une bibliothèque open source développée et distribuée par Apache Software Foundation pour concevoir ou modifier des fichiers Microsoft Office à l'aide du programme Java. Il contient des classes et des méthodes pour décoder les données d'entrée utilisateur ou un fichier dans des documents MS Office.

Composants d'Apache POI

Apache POI contient des classes et des méthodes pour travailler sur tous les documents OLE2 Compound de MS Office. La liste des composants de cette API est donnée ci-dessous.

  • POIFS(Mauvais système de fichiers d'implémentation de l'obfuscation) - Ce composant est le facteur de base de tous les autres éléments POI. Il est utilisé pour lire explicitement différents fichiers.

  • HSSF (Format de feuille de calcul horrible) - Il est utilisé pour lire et écrire au format xls des fichiers MS-Excel.

  • XSSF (Format de feuille de calcul XML) - Il est utilisé pour le format de fichier xlsx de MS-Excel.

  • HPSF (Format de jeu de propriétés horrible) - Il est utilisé pour extraire les jeux de propriétés des fichiers MS-Office.

  • HWPF (Horrible Word Processor Format) - Il est utilisé pour lire et écrire des fichiers d'extension doc de MS-Word.

  • XWPF (Format de traitement de texte XML) - Il est utilisé pour lire et écrire des fichiers d'extension docx de MS-Word.

  • HSLF (Format de mise en page des diapositives horrible) - Il est utilisé pour lire, créer et modifier des présentations PowerPoint.

  • HDGF (Horrible DiaGram Format) - Il contient des classes et des méthodes pour les fichiers binaires MS-Visio.

  • HPBF (Horrible PuBlisher Format) - Il est utilisé pour lire et écrire des fichiers MS-Publisher.

Il s'agit d'une classe de haut niveau sous le package org.apache.poi.hssf.usermodel. Il implémente l'interface du classeur et est utilisé pour les fichiers Excel au format .xls.

Il s'agit d'une classe utilisée pour représenter les formats de fichiers Excel de haut et de bas niveau. Il appartient au package org.apache.xssf.usemodel et implémente l'interface Workbook.

Il s'agit d'une classe sous le package org.apache.poi.hssf.usermodel. Il peut créer des feuilles de calcul Excel et il permet de formater le style de feuille et les données de la feuille.

Il s'agit d'une classe qui représente une représentation de haut niveau de la feuille de calcul Excel. Il se trouve sous le package org.apache.poi.hssf.usermodel.

Il s'agit d'une classe sous le package org.apache.poi.xssf.usermodel. Il implémente l'interface Row, donc il peut créer des lignes dans une feuille de calcul.

Il s'agit d'une classe sous le package org.apache.poi.xssf.usermodel. Il implémente l'interface Cell. Il s'agit d'une représentation de haut niveau des cellules dans les lignes d'une feuille de calcul.

Il s'agit d'une classe sous le package org.apache.poi.xssf.usermodel. Il fournira des informations éventuelles concernant le format du contenu dans une cellule d'une feuille de calcul. Il fournit également des options pour modifier ce format. Il implémente l'interface CellStyle.

Il s'agit d'une classe sous le package org.apache.poi.hssf.util. Il fournit différentes couleurs sous forme de classes imbriquées. Habituellement, ces classes imbriquées sont représentées à l'aide de leurs propres index. Il implémente l'interface Color.

Il s'agit d'une classe sous le package org.apache.poi.xssf.usermodel. Il implémente l'interface Police et peut donc gérer différentes polices dans un classeur.

Il s'agit d'une classe sous le package org.apache.poi.xssf.usermodel. Il implémente l'interface Hyperlink. Il est utilisé pour définir un lien hypertexte vers le contenu des cellules d'une feuille de calcul.

Il s'agit d'une classe sous le package org.apache.poi.xssf.usermodel. Il implémente l'interface CreationHelper. Il est utilisé comme classe de support pour l'évaluation des formules et la configuration des hyperliens.

Il s'agit d'une classe sous le package org.apache.poi.xsssf.usermodel. Il implémente l'interface PrintSetup. Il est utilisé pour définir la taille, la zone, les options et les paramètres de la page d'impression.

L'extrait de code suivant est utilisé pour créer une feuille de calcul.

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

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

L'extrait de code suivant est utilisé pour créer une ligne.

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

L'extrait de code suivant est utilisé pour créer une cellule.

//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);

Types de cellules

Le type de cellule spécifie si une cellule peut contenir des chaînes, une valeur numérique ou des formules. Une cellule de chaîne ne peut pas contenir de valeurs numériques et une cellule numérique ne peut pas contenir de chaînes. Vous trouverez ci-dessous les types de cellules, leurs valeurs et la syntaxe des types.

Type de valeur de cellule Syntaxe de type
Valeur de cellule vide XSSFCell.CELL_TYPE_BLANK
Valeur de cellule booléenne XSSFCell.CELL_TYPE_BOOLEAN
Valeur de la cellule d'erreur XSSFCell.CELL_TYPE_ERROR
Valeur de cellule numérique XSSFCell.CELL_TYPE_NUMERIC
Valeur de la cellule de chaîne XSSFCell.CELL_TYPE_STRING

La classe XSSFCellStyle est utilisée pour styliser une cellule. L'extrait de code suivant peut être utilisé pour définir l'alignement des cellules sur "En haut à gauche".

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 est utilisée pour ajouter une police à une cellule. L'extrait de code suivant peut être utilisé pour définir la couleur d'arrière-plan d'une cellule sur "Vert".

//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 peut être utilisée pour faire pivoter une cellule. L'extrait de code suivant peut être utilisé pour définir l'alignement du texte de la cellule sur un angle spécifié.

//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 peut être utilisé dans la cellule comme cellule de formule.

// 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 peut être utilisé dans la cellule comme cellule de formule.

// 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 peut être utilisé dans la cellule comme cellule de formule.

// 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 peut être utilisé dans la cellule comme cellule de formule.

// 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 peut être utilisé dans la cellule comme cellule de formule.

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

XSSFHyperlink peut être utilisé pour ajouter un lien hypertexte à une cellule.

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

L'extrait de code suivant montre la configuration de la zone imprimable d'un Excel à l'aide d'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);