Apache POI - Guide rapide

Plusieurs fois, une application logicielle est nécessaire pour générer des rapports au format de fichier Microsoft Excel. Parfois, une application est même censée recevoir des fichiers Excel en tant que données d'entrée. Par exemple, une application développée pour le service financier d'une entreprise sera nécessaire pour générer toutes ses sorties dans Excel.

Tout programmeur Java souhaitant produire des fichiers MS Office en tant que sortie doit utiliser une API prédéfinie et en lecture seule pour ce faire.

Qu'est-ce que Apache POI?

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 xls format des fichiers MS-Excel.

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

  • HPSF (Horrible Property Set Format) - Il est utilisé pour extraire property sets des fichiers MS-Office.

  • HWPF (Format de traitement de texte horrible) - Il est utilisé pour lire et écrire doc fichiers d'extension de MS-Word.

  • XWPF (Format de traitement de texte XML) - Il est utilisé pour lire et écrire docx fichiers d'extension 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 MS-Visio fichiers binaires.

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

Ce didacticiel vous guide tout au long du processus de travail sur des fichiers Excel à l'aide de Java. Par conséquent, la discussion se limite aux composants HSSF et XSSF.

Note - Les anciennes versions de POI prennent en charge les formats de fichiers binaires tels que doc, xls, ppt, etc. À partir de la version 3.5, POI prend en charge les formats de fichiers OOXML de MS-Office tels que docx, xlsx, pptx, etc.

Comme Apache POI, il existe d'autres bibliothèques fournies par divers fournisseurs pour la génération de fichiers Excel. Ceux-ci inclusAspose cells for Java par Aspose, JXL par les bibliothèques communes, et JExcel par Team Dev.

Ce chapitre vous présente certaines des saveurs de l'API Java Excel et leurs fonctionnalités. Il existe de nombreux fournisseurs qui fournissent des API liées à Java Excel; certains d'entre eux sont examinés dans ce chapitre.

Aspose Cells pour Java

Aspose Cells for Java est une API Java Excel sous licence purement développée et distribuée par le fournisseur Aspose. La dernière version de cette API est la 8.1.2, publiée en juillet 2014. Il s'agit d'une API riche et lourde (combinaison de classes Java simples et de classes AWT) pour la conception du composant Excel capable de lire, d'écrire et de manipuler des feuilles de calcul.

Les utilisations courantes de cette API sont les suivantes -

  • Rapports Excel, créez des rapports Excel dynamiques
  • Rendu et impression Excel haute fidélité
  • Importez et exportez des données à partir de feuilles de calcul Excel
  • Générer, modifier et convertir des feuilles de calcul

JXL

JXL est un framework tiers conçu pour Selenium qui prend en charge l'automatisation basée sur les données sur les navigateurs Web (mise à jour automatique des données sur les navigateurs Web). Cependant, il est également utilisé comme bibliothèque de support commune pour l'API JExcel car il possède des fonctionnalités de base pour créer, lire et écrire des feuilles de calcul.

Les fonctionnalités de base sont les suivantes -

  • Générer des fichiers Excel
  • Importer des données à partir de classeurs et de feuilles de calcul
  • Obtenez le nombre total de lignes et de colonnes

Note - JXL prend uniquement en charge le format de fichier .xls et ne peut pas gérer un volume de données important.

JExcel

JExcel est une API purement sous licence fournie par Team Dev. Grâce à cela, les programmeurs peuvent facilement lire, écrire, afficher et modifier des classeurs Excel dans les deux.xls et .xlsxformats. Cette API peut être facilement intégrée avec Java Swing et AWT. La dernière version de cette API est Jexcel-2.6.12, publiée en 2009.

Les principales caractéristiques sont les suivantes -

  • Automatisez l'application Excel, les classeurs, les feuilles de calcul, etc.
  • Incorporer des classeurs dans une application Java Swing en tant que composant Swing ordinaire
  • Ajouter des écouteurs d'événements aux classeurs et aux feuilles de calcul
  • Ajouter des gestionnaires d'événements pour gérer le comportement des événements de classeur et de feuille de calcul
  • Ajouter des pairs natifs pour développer des fonctionnalités personnalisées

POI Apache

Apache POI est une bibliothèque 100% open source fournie par Apache Software Foundation. La plupart des développeurs d'applications à petite et moyenne échelle dépendent fortement d'Apache POI (HSSF + XSSF). Il prend en charge toutes les fonctionnalités de base des bibliothèques Excel; cependant, le rendu et l'extraction de texte sont ses principales caractéristiques.

Ce chapitre vous guide tout au long du processus de configuration d'Apache POI sur les systèmes Windows et Linux. Apache POI peut être facilement installé et intégré à votre environnement Java actuel en quelques étapes simples sans aucune procédure de configuration complexe. L'administration des utilisateurs est requise lors de l'installation.

Configuration requise

JDK Java SE 2 JDK 1.5 ou supérieur
Mémoire 1 Go de RAM (recommandé)
Espace disque Aucune exigence minimale
Version du système d'exploitation Windows XP ou supérieur, Linux

Passons maintenant aux étapes d'installation d'Apache POI.

Étape 1: Vérifiez votre installation Java

Tout d'abord, vous devez disposer du kit de développement logiciel Java (SDK) installé sur votre système. Pour vérifier cela, exécutez l'une des deux commandes en fonction de la plate-forme sur laquelle vous travaillez.

Si l'installation de Java a été effectuée correctement, la version actuelle et les spécifications de votre installation Java seront affichées. Un exemple de sortie est donné dans le tableau suivant.

Plate-forme Commander Exemple de sortie
les fenêtres

Ouvrez la console de commande et tapez -

\>java –version

Version Java "1.7.0_60"

Environnement d'exécution Java (TM) SE (build 1.7.0_60-b19)

VM serveur 64 bits Java Hotspot (TM) (build 24.60-b09, mode mixte)

Linux

Ouvrez le terminal de commande et tapez -

$java –version

version java "1.7.0_25"

Ouvrir l'environnement d'exécution JDK (rhel-2.3.10.4.el6_4-x86_64)

Ouvrez la machine virtuelle serveur JDK 64 bits (build 23.7-b01, mode mixte)

  • Nous supposons que les lecteurs de ce didacticiel ont installé la version 1.7.0_60 du SDK Java sur leur système.

  • Si vous ne disposez pas du SDK Java, téléchargez sa version actuelle sur https://www.oracle.com/technetwork/java/javase/downloads/index.html et faites-le installer.

Étape 2: définissez votre environnement Java

Définissez la variable d'environnement JAVA_HOME pour qu'elle pointe vers l'emplacement du répertoire de base où Java est installé sur votre machine. Par exemple,

Sr.No. Plateforme et description
1

Windows

Définissez JAVA_HOME sur C: \ ProgramFiles \ java \ jdk1.7.0_60

2

Linux

Exporter JAVA_HOME = / usr / local / java-current

Ajoutez le chemin complet de l'emplacement du compilateur Java au chemin système.

Sr.No. Plateforme et description
1

Windows

Ajoutez la chaîne «C: \ Program Files \ Java \ jdk1.7.0_60 \ bin» à la fin de la variable système PATH.

2

Linux

Exporter PATH = $ PATH: $ JAVA_HOME / bin /

Exécutez la commande java -version à partir de l'invite de commande comme expliqué ci-dessus.

Étape 3: Installez la bibliothèque de POI Apache

Téléchargez la dernière version d'Apache POI sur https://poi.apache.org/download.htmlet décompressez son contenu dans un dossier à partir duquel les bibliothèques requises peuvent être liées à votre programme Java. Supposons que les fichiers sont collectés dans un dossier sur le lecteur C.

Les images suivantes montrent les répertoires et la structure des fichiers dans le dossier téléchargé.

Ajoutez le chemin complet des cinq jars comme mis en évidence dans l'image ci-dessus au CLASSPATH.

Sr.No. Plateforme et description
1

Windows

Ajoutez les chaînes suivantes à la fin de la variable utilisateur

CLASSPATH -

«C: \ poi-3.9 \ poi-3.9-20121203.jar;»

«C: \ poi-3.9 \ poi-ooxml-3.9-20121203.jar;»

«C: \ poi-3.9 \ poi-ooxml-schemas-3.9-20121203.jar;»

«C: \ poi-3.9 \ ooxml-lib \ dom4j-1.6.1.jar;»

«C: \ poi-3.9 \ ooxml-lib \ xmlbeans-2.3.0.jar;.;»

2

Linux

Exporter CLASSPATH = $ CLASSPATH:

/usr/share/poi-3.9/poi-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-schemas-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-3.9-20121203.tar:

/usr/share/poi-3.9/ooxml-lib/dom4j-1.6.1.tar:

/usr/share/poi-3.9/ooxml-lib/xmlbeans-2.3.0.tar

Ce chapitre explique quelques classes et méthodes de l'API Apache POI qui sont essentielles pour travailler sur des fichiers Excel à l'aide de programmes Java.

Classeur

Il s'agit de la super-interface de toutes les classes qui créent ou gèrent des classeurs Excel. Il appartient à laorg.apache.poi.ss.usermodelpaquet. Les deux classes qui implémentent cette interface sont les suivantes -

  • HSSFWorkbook- Cette classe a des méthodes pour lire et écrire des fichiers Microsoft Excel au format .xls. Il est compatible avec les versions 97–2003 de MS-Office.

  • XSSFWorkbook- Cette classe a des méthodes pour lire et écrire des fichiers Microsoft Excel et OpenOffice xml au format .xls ou .xlsx. Il est compatible avec les versions 2007 ou ultérieures de MS-Office.

HSSFWorkbook

C'est une classe de haut niveau sous le org.apache.poi.hssf.usermodelpaquet. Il met en œuvre leWorkbookinterface et est utilisé pour les fichiers Excel au format .xls. Vous trouverez ci-dessous quelques-unes des méthodes et des constructeurs de cette classe.

Constructeurs de classe

Sr.No. Constructeur et description
1

HSSFWorkbook()

Crée un nouvel objet HSSFWorkbook à partir de zéro.

2

HSSFWorkbook(DirectoryNode directory, boolean preserveNodes)

Crée un nouvel objet HSSFWworkbook dans un répertoire spécifique.

3

HSSFWorkbook(DirectoryNode directory, POIFSFileSystem fs, boolean preserveNodes)

Étant donné un objet POIFSFileSystem et un répertoire spécifique qu'il contient, il crée un objet SSFWorkbook pour lire un classeur spécifié.

4

HSSFWorkbook(java.io.InputStream s)

Crée un nouvel objet HSSFWorkbook à l'aide d'un flux d'entrée.

5

HSSFWorkbook(java.io.InputStream s, boolean preserveNodes)

Construit un système de fichiers POI autour de votre flux d'entrée.

6

HSSFWorkbook(POIFSFileSystem fs)

Construit un nouvel objet HSSFWorkbook à l'aide d'un objet POIFSFileSystem.

sept

HSSFWorkbook(POIFSFileSystem fs, boolean preserveNodes)

Étant donné un objet POIFSFileSystem, il crée un nouvel objet HSSFWorkbook pour lire un classeur spécifié.

Les paramètres fréquemment utilisés à l'intérieur de ces constructeurs sont -

  • directory - Il s'agit du répertoire du système de fichiers POI à partir duquel traiter.

  • fs - C'est le système de fichiers POI qui contient le flux de classeur.

  • preservenodes- C'est un paramètre facultatif qui décide s'il faut conserver d'autres nœuds comme des macros. Il consomme beaucoup de mémoire car il stocke tout POIFileSystem en mémoire (s'il est défini).

Note- La classe HSSFWorkbook contient un certain nombre de méthodes; cependant, ils ne sont compatibles qu'avec le format xls. Dans ce didacticiel, l'accent est mis sur la dernière version des formats de fichiers Excel. Par conséquent, les méthodes de classe de HSSFWorkbook ne sont pas répertoriées ici. Si vous avez besoin de ces méthodes de classe, reportez-vous à l'API de classe POI-HSSFWorkbook à l'adressehttps://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFWorkbook.html.

XSSFWorkbook

Il s'agit d'une classe utilisée pour représenter les formats de fichiers Excel de haut et de bas niveau. Il appartient à laorg.apache.xssf.usemodel package et implémente le Workbookinterface. Vous trouverez ci-dessous les méthodes et les constructeurs de cette classe.

Constructeurs de classe

Sr.No. Constructeur et description
1

XSSFWorkbook()

Crée un nouvel objet XSSFworkbook à partir de zéro.

2

XSSFWorkbook(java.io.File file)

Construit un objet XSSFWorkbook à partir d'un fichier donné.

3

XSSFWorkbook(java.io.InputStream is)

Construit un objet XSSFWorkbook, en mettant en mémoire tampon tout le flux d'entrée en mémoire, puis en ouvrant un objet OPCPackage pour celui-ci.

4

XSSFWorkbook(java.lang.String path)

Construit un objet XSSFWorkbook en fonction du chemin complet d'un fichier.

Méthodes de classe

Sr.No. Méthode et description
1

createSheet()

Crée une feuille XSSFS pour ce classeur, l'ajoute aux feuilles et renvoie la représentation de haut niveau.

2

createSheet(java.lang.String sheetname)

Crée une nouvelle feuille pour ce classeur et renvoie la représentation de haut niveau.

3

createFont()

Crée une nouvelle police et l'ajoute à la table de polices du classeur.

4

createCellStyle()

Crée un nouveau XSSFCellStyle et l'ajoute à la table de styles du classeur.

5

createFont()

Crée une nouvelle police et l'ajoute à la table de polices du classeur.

6

setPrintArea(int sheetIndex, int startColumn, int endColumn, int startRow,int endRow)

Définit la zone d'impression d'une feuille donnée selon les paramètres spécifiés.

Pour les autres méthodes de cette classe, reportez-vous au document API complet à l'adresse: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html. pour la liste complète des méthodes.

Feuille

La feuille est une interface sous le org.apache.poi.ss.usermodelpackage et c'est une super-interface de toutes les classes qui créent des feuilles de calcul de haut ou bas niveau avec des noms spécifiques. Le type de feuille de calcul le plus courant est la feuille de calcul, qui est représentée sous la forme d'une grille de cellules.

Feuille HSSF

Ceci est une classe sous le org.apache.poi.hssf.usermodelpaquet. 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.

Constructeurs de classe

Sr.No. Constructeur et description
1

HSSFSheet(HSSFWorkbook workbook)

Crée une nouvelle feuille HSSFS appelée par HSSFWorkbook pour créer une feuille à partir de zéro.

2

HSSFSheet(HSSFWorkbook workbook, InternalSheet sheet)

Crée une feuille HSSFS représentant l'objet feuille donné.

XSSFSheet

Il s'agit d'une classe qui représente une représentation de haut niveau de la feuille de calcul Excel. C'est sousorg.apache.poi.hssf.usermodel paquet.

Constructeurs de classe

Sr.No. Constructeur et description
1

XSSFSheet()

Crée une nouvelle feuille XSSFS - appelée par XSSFWorkbook pour créer une feuille à partir de zéro.

2

XSSFSheet(PackagePart part, PackageRelationship rel)

Crée une feuille XSSFS représentant la partie et la relation de package données.

Méthodes de classe

Sr.No. Méthode et description
1

addMergedRegion(CellRangeAddress region)

Ajoute une région fusionnée de cellules (par conséquent, ces cellules n'en forment qu'une).

2

autoSizeColumn(int column)

Ajuste la largeur de la colonne en fonction du contenu.

3

iterator()

Cette méthode est un alias pour rowIterator () pour autoriser les boucles foreach

4

addHyperlink(XSSFHyperlink hyperlink)

Enregistre un hyperlien dans la collection d'hyperliens de cette feuille

Pour les autres méthodes de cette classe, reportez-vous à l'API complète à l'adresse: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html.

Rangée

Ceci est une interface sous le org.apache.poi.ss.usermodelpaquet. Il est utilisé pour la représentation de haut niveau d'une ligne d'une feuille de calcul. C'est une super-interface de toutes les classes qui représentent des lignes dans la bibliothèque POI.

XSSFRow

Ceci est une classe sous le org.apache.poi.xssf.usermodelpaquet. Il implémente l'interface Row, donc il peut créer des lignes dans une feuille de calcul. Vous trouverez ci-dessous les méthodes et les constructeurs de cette classe.

Méthodes de classe

Sr.No. Méthode et description
1

createCell(int columnIndex)

Crée de nouvelles cellules dans la ligne et la renvoie.

2

setHeight(short height)

Définit la hauteur en unités courtes.

Pour les autres méthodes de cette classe, suivez le lien donné https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRow.html

Cellule

Ceci est une interface sous le org.apache.poi.ss.usermodelpaquet. C'est une super-interface de toutes les classes qui représentent des cellules dans les lignes d'une feuille de calcul.

Les cellules peuvent prendre divers attributs tels que vide, numérique, date, erreur, etc. Les cellules doivent avoir leurs propres nombres (basés sur 0) avant d'être ajoutées à une ligne.

XSSFCell

Ceci est une classe sous le org.apache.poi.xssf.usermodelpaquet. 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.

Résumé du champ

Vous trouverez ci-dessous certains des champs de la classe XSSFCell avec leur description.

Sr.No. Type de cellule et description
1

CELL_TYPE_BLANK

Représente une cellule vide

2

CELL_TYPE_BOOLEAN

Représente la cellule booléenne (vrai ou faux)

3

CELL_TYPE_ERROR

Représente la valeur d'erreur sur une cellule

4

CELL_TYPE_FORMULA

Représente le résultat de la formule sur une cellule

5

CELL_TYPE_NUMERIC

Représente des données numériques sur une cellule

6

CELL_TYPE_STRING

Représente une chaîne (texte) sur une cellule

Méthodes de classe

Sr.No. Méthode et description
1

setCellStyle(CellStyle style)

Définit le style de la cellule.

2

setCellType(int cellType)

Définit le type de cellules (numérique, formule ou chaîne).

3

setCellValue(boolean value)

Définit une valeur booléenne pour la cellule.

4

setCellValue(java.util.Calendar value)

Définit une valeur de date pour la cellule.

5

setCellValue(double value)

Définit une valeur numérique pour la cellule.

6

setCellValue(java.lang.String str)

Définit une valeur de chaîne pour la cellule.

sept

setHyperlink(Hyperlink hyperlink)

Attribue un lien hypertexte à cette cellule.

Pour les méthodes et champs restants de cette classe, visitez le lien suivant: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCell.html

XSSFCellStyle

Ceci est une classe sous le org.apache.poi.xssf.usermodelpaquet. 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.

Résumé du champ

Le tableau suivant répertorie quelques champs hérités de l'interface CellStyle.

Sr.No. Champ et description
1

ALIGN_CENTER

Centrer aligner le contenu de la cellule

2

ALIGN_CENTER_SELECTION

Alignement horizontal de sélection centrale

3

ALIGN_FILL

La cellule s'adapte à la taille du contenu

4

ALIGN_JUSTIFY

Ajuster le contenu de la cellule à sa largeur

5

ALIGN_LEFT

Aligner à gauche le contenu de la cellule

6

ALIGN_RIGHT

Alignez à droite le contenu de la cellule

sept

BORDER_DASH_DOT

Style de cellule avec tiret et point

8

BORDER_DOTTED

Style de cellule avec bordure en pointillé

9

BORDER_DASHED

Style de cellule avec bordure en pointillés

dix

BORDER_THICK

Style de cellule avec bordure épaisse

11

BORDER_THIN

Style de cellule avec bordure fine

12

VERTICAL_BOTTOM

Aligner le contenu de la cellule verticalement en bas

13

VERTICAL_CENTER

Aligner le centre vertical du contenu de la cellule

15

VERTICAL_JUSTIFY

Aligner et justifier le contenu de la cellule verticalement

16

VERTICAL_TOP

Alignement vertical aligné en haut

Constructeurs de classe

Sr.No. Constructeur et description
1

XSSFCellStyle(int cellXfId, int cellStyleXfId, StylesTable stylesSource, ThemesTable theme)

Crée un style de cellule à partir des pièces fournies

2

XSSFCellStyle(StylesTable stylesSource)

Crée un style de cellule vide

Méthodes de classe

S. Non Méthode et description
1

setAlignment(short align)

Définit le type d'alignement horizontal de la cellule

2

setBorderBottom(short border)

Définit le type de bordure pour la bordure inférieure de la cellule

3

setBorderColor(XSSFCellBorder.BorderSide side, XSSFColor color)

Définit la couleur de la bordure sélectionnée

4

setBorderLeft(Short border)

Définit le type de bordure pour la bordure gauche de la cellule

5

setBorderRight(short border)

Définit le type de bordure pour la bordure droite de la cellule

6

setBorderTop(short border)

Définit le type de bordure pour la bordure supérieure de la cellule

sept

setFillBackgroundColor(XSSFColor color)

Définit la couleur de remplissage d'arrière-plan représentée comme une valeur XSSFColor.

8

setFillForegroundColor(XSSFColor color)

Définit la couleur de remplissage de premier plan représentée comme une valeur XSSFColor.

9

setFillPattern(short fp)

Spécifie les informations de remplissage de cellule pour les motifs et les remplissages de cellule de couleur unie.

dix

setFont(Font font)

Définit la police de ce style.

11

setRotation(short rotation)

Définit le degré de rotation du texte dans la cellule.

12

setVerticalAlignment(short align)

Définit le type d'alignement vertical de la cellule.

Pour les méthodes et champs restants de cette classe, passez par le lien suivant: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCellStyle.html

HSSFCouleur

Ceci est une classe sous le org.apache.poi.hssf.utilpaquet. 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.

Classes imbriquées

Toutes les classes imbriquées de cette classe sont statiques et chaque classe a son index. Ces classes de couleurs imbriquées sont utilisées pour la mise en forme des cellules telles que le contenu de la cellule, la bordure, le premier plan et l'arrière-plan. Voici quelques-unes des classes imbriquées.

Sr.No. Noms de classe (couleurs)
1 HSSFColor.AQUA
2 HSSFColor.AUTOMATIQUE
3 HSSFCouleur.BLACK
4 HSSFColor.BLUE
5 HSSFColor.BRIGHT_GREEN
6 HSSFColor.BRIGHT_GRAY
sept HSSFCouleur.CORAL
8 HSSFColor.DARK_BLUE
9 HSSFColor.DARK_GREEN
dix HSSFColor.SKY_BLUE
11 HSSFColor.WHITE
12 HSSFCouleur.JAUNE

Méthodes de classe

Une seule méthode de cette classe est importante et qui est utilisée pour obtenir la valeur d'index.

Sr.No. Méthode et description
1

getIndex()

Cette méthode est utilisée pour obtenir la valeur d'index d'une classe imbriquée.

Pour les méthodes restantes et les classes imbriquées, reportez-vous au lien suivant: https://poi.apache.org/apidocs/org/apache/poi/hssf/util/HSSFColor.html

XSSFCouleur

Ceci est une classe sous le org.apache.poi.xssf.usermodelpaquet. Il est utilisé pour représenter la couleur dans une feuille de calcul. Il implémente l'interface Color. Vous trouverez ci-dessous quelques-unes de ses méthodes et constructeurs.

Constructeurs de classe

Sr.No. Constructeur et description
1

XSSFColor()

Crée une nouvelle instance de XSSFColor.

2

XSSFColor(byte[] rgb)

Crée une nouvelle instance de XSSFColor à l'aide de RVB.

3

XSSFColor(java.awt.Color clr)

Crée une nouvelle instance de XSSFColor à l'aide de la classe Color du package awt.

Méthodes de classe

Sr.No. Méthode et description
1

setAuto(boolean auto)

Définit une valeur booléenne pour indiquer que ctColor est automatique et que le système ctColor est dépendant.

2

setIndexed(int indexed)

Définit la valeur ctColor indexée comme système ctColor.

Pour les autres méthodes, visitez le lien suivant: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFColor.html

XSSFFont

Ceci est une classe sous le org.apache.poi.xssf.usermodelpaquet. Il implémente l'interface de police et peut donc gérer différentes polices dans un classeur.

Constructeur de classe

Sr.No. Constructeur et description
1

XSSFFont()

Crée une nouvelle instance XSSFont.

Méthodes de classe

Sr.No. Méthode et description
1

setBold(boolean bold)

Définit une valeur booléenne pour l'attribut 'bold'.

2

setColor(short color)

Définit la couleur indexée de la police.

3

setColor(XSSFColor color)

Définit la couleur de la police dans la valeur de couleur RVB Alpha standard.

4

setFontHeight(short height)

Définit la hauteur de la police en points.

5

setFontName(java.lang.String name)

Définit le nom de la police.

6

setItalic(boolean italic)

Définit une valeur booléenne pour la propriété 'italic'.

Pour les méthodes restantes, passez par le lien suivant: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFFont.html

XSSFHyperlink

Ceci est une classe sous le org.apache.poi.xssf.usermodelpaquet. 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.

Des champs

Les champs de cette classe sont les suivants. Ici, les champs désignent les types d'hyperliens utilisés.

Sr.No. Champ et description
1

LINK_DOCUMENT

Utilisé pour lier tout autre document

2

LINK_EMAIL

Utilisé pour lier un e-mail

3

LINK_FILE

Utilisé pour lier tout autre fichier dans n'importe quel format

4

LINK_URL

Utilisé pour lier une URL Web

Méthodes de classe

Sr.No. Méthode et description
1

setAddress(java.lang.String address)

Adresse du lien hypertexte.

Pour les autres méthodes, visitez le lien suivant: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFHyperlink.html

XSSFCreationHelper

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

Méthodes de classe

Sr.No. Méthode et description
1

createFormulaEvaluator()

Crée une instance XSSFFormulaEvaluator, l'objet qui évalue les cellules de formule.

2

createHyperlink(int type)

Crée un nouveau XSSFHyperlink.

Pour les autres méthodes, reportez-vous au lien suivant: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCreationHelper.html

XSSFPrintSetup

Ceci est une classe sous le org.apache.poi.xsssf.usermodelpaquet. Il met en œuvre lePrintSetupinterface. Il est utilisé pour définir la taille, la zone, les options et les paramètres de la page d'impression.

Méthodes de classe

Sr.No. Méthode et description
1

setLandscape(boolean ls)

Définit une valeur booléenne pour autoriser ou bloquer l'impression paysage.

2

setLeftToRight(boolean ltor)

Définit s'il faut aller de gauche à droite ou de haut en bas dans l'ordre lors de l'impression.

3

setPaperSize(short size)

Définit le format du papier.

Pour les autres méthodes, visitez le lien suivant: https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFPrintSetup.html

Ici, le terme «classeur» désigne un fichier Microsoft Excel. Une fois ce chapitre terminé, vous pourrez créer de nouveaux classeurs et ouvrir des classeurs existants avec votre programme Java.

Créer un classeur vierge

Le programme simple suivant est utilisé pour créer un classeur Microsoft Excel vierge.

import java.io.*;
import org.apache.poi.xssf.usermodel.*;

public class CreateWorkBook {
   public static void main(String[] args)throws Exception {
      //Create Blank workbook
      XSSFWorkbook workbook = new XSSFWorkbook(); 

      //Create file system using specific name
      FileOutputStream out = new FileOutputStream(new File("createworkbook.xlsx"));

      //write operation workbook using file out object 
      workbook.write(out);
      out.close();
      System.out.println("createworkbook.xlsx written successfully");
   }
}

Sauvegardons le code Java ci-dessus sous CreateWorkBook.java, puis compilez et exécutez-le à partir de l'invite de commande comme suit -

$javac CreateWorkBook.java $java CreateWorkBook

Si votre environnement système est configuré avec la bibliothèque POI, il sera compilé et exécuté pour générer le fichier Excel vierge nommé createworkbook.xlsx dans votre répertoire actuel et affichez la sortie suivante dans l'invite de commande.

createworkbook.xlsx written successfully

Ouvrir le classeur existant

Utilisez le code suivant pour ouvrir un classeur existant.

import java.io.*;
import org.apache.poi.xssf.usermodel.*;

public class OpenWorkBook {
   public static void main(String args[])throws Exception { 
      File file = new File("openworkbook.xlsx");
      FileInputStream fIP = new FileInputStream(file);
      
      //Get the workbook instance for XLSX file 
      XSSFWorkbook workbook = new XSSFWorkbook(fIP);
      
      if(file.isFile() && file.exists()) {
         System.out.println("openworkbook.xlsx file open successfully.");
      } else {
         System.out.println("Error to open openworkbook.xlsx file.");
      }
   }
}

Enregistrez le code Java ci-dessus sous OpenWorkBook.java, puis compilez et exécutez-le à partir de l'invite de commande comme suit -

$javac OpenWorkBook.java $java OpenWorkBook

Il se compilera et s'exécutera pour générer la sortie suivante.

openworkbook.xlsx file open successfully.

Après avoir ouvert un classeur, vous pouvez y effectuer des opérations de lecture et d'écriture.

Ce chapitre explique comment créer une feuille de calcul et la manipuler à l'aide de Java. La feuille de calcul est une page dans un fichier Excel; il contient des lignes et des colonnes avec des noms spécifiques.

Après avoir terminé ce chapitre, vous pourrez créer une feuille de calcul et y effectuer des opérations de lecture.

Créer une feuille de calcul

Tout d'abord, créons une feuille de calcul en utilisant les classes référencées discutées dans les chapitres précédents. En suivant le chapitre précédent, créez d'abord un classeur, puis nous pouvons continuer et créer une feuille.

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

Lignes sur la feuille de calcul

Les feuilles de calcul ont une disposition en grille. Les lignes et les colonnes sont identifiées par des noms spécifiques. Les colonnes sont identifiées par des alphabets et les lignes par des nombres.

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

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

Écrire dans une feuille de calcul

Prenons un exemple de données sur les employés. Ici, les données des employés sont présentées sous forme de tableau.

ID Emp Nom de l'emp La désignation
Tp01 Gopal Directeur technique
TP02 Manisha Lecteur d'épreuves
Tp03 Masthan Rédacteur technique
Tp04 Satish Rédacteur technique
Tp05 Krishna Rédacteur technique

Le code suivant est utilisé pour écrire les données ci-dessus dans une feuille de calcul.

import java.io.File;
import java.io.FileOutputStream;

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Writesheet {
   public static void main(String[] args) throws Exception {

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

      //Create a blank sheet
      XSSFSheet spreadsheet = workbook.createSheet(" Employee Info ");

      //Create row object
      XSSFRow row;

      //This data needs to be written (Object[])
      Map < String, Object[] > empinfo = 
      new TreeMap < String, Object[] >();
      empinfo.put( "1", new Object[] { "EMP ID", "EMP NAME", "DESIGNATION" });
      empinfo.put( "2", new Object[] { "tp01", "Gopal", "Technical Manager" });
      empinfo.put( "3", new Object[] { "tp02", "Manisha", "Proof Reader" });
      empinfo.put( "4", new Object[] { "tp03", "Masthan", "Technical Writer" });
      empinfo.put( "5", new Object[] { "tp04", "Satish", "Technical Writer" });
      empinfo.put( "6", new Object[] { "tp05", "Krishna", "Technical Writer" });
      
      //Iterate over data and write to sheet
      Set < String > keyid = empinfo.keySet();
      int rowid = 0;

      for (String key : keyid) {
         row = spreadsheet.createRow(rowid++);
         Object [] objectArr = empinfo.get(key);
         int cellid = 0;

         for (Object obj : objectArr) {
            Cell cell = row.createCell(cellid++);
            cell.setCellValue((String)obj);
         }
      }

      //Write the workbook in file system
      FileOutputStream out = new FileOutputStream(new File("Writesheet.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("Writesheet.xlsx written successfully");
   }
}

Enregistrez le code Java ci-dessus sous Writesheet.java, puis compilez et exécutez-le à partir de l'invite de commande comme suit -

$javac Writesheet.java $java Writesheet

Il se compilera et s'exécutera pour générer un fichier Excel nommé Writesheet.xlsx dans votre répertoire actuel et vous obtiendrez la sortie suivante dans l'invite de commande.

Writesheet.xlsx written successfully

le Writesheet.xlsx Le fichier ressemble à ce qui suit.

Lire à partir d'une feuille de calcul

Considérons le fichier Excel ci-dessus nommé Writesheet.xslxcomme entrée. Observez le code suivant; il est utilisé pour lire les données d'une feuille de calcul.

import java.io.File;
import java.io.FileInputStream;

import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Readsheet {
   static XSSFRow row;
   public static void main(String[] args) throws Exception {
      FileInputStream fis = new FileInputStream(new File("WriteSheet.xlsx"));
      
      XSSFWorkbook workbook = new XSSFWorkbook(fis);
      XSSFSheet spreadsheet = workbook.getSheetAt(0);
      Iterator < Row >  rowIterator = spreadsheet.iterator();
      
      while (rowIterator.hasNext()) {
         row = (XSSFRow) rowIterator.next();
         Iterator < Cell >  cellIterator = row.cellIterator();
         
         while ( cellIterator.hasNext()) {
            Cell cell = cellIterator.next();
            
            switch (cell.getCellType()) {
               case Cell.CELL_TYPE_NUMERIC:
                  System.out.print(cell.getNumericCellValue() + " \t\t ");
                  break;
               
               case Cell.CELL_TYPE_STRING:
                  System.out.print(
                  cell.getStringCellValue() + " \t\t ");
                  break;
            }
         }
         System.out.println();
      }
      fis.close();
   }
}

Gardons le code ci-dessus dans Readsheet.java fichier, puis compilez et exécutez-le à partir de l'invite de commande comme suit -

$javac Readsheet.java $java Readsheet

Si votre environnement système est configuré avec la bibliothèque POI, il sera compilé et exécuté pour générer la sortie suivante dans l'invite de commande.

EMP ID   EMP NAME       DESIGNATION 
 tp01     Gopal       Technical Manager 
 tp02     Manisha     Proof Reader 
 tp03     Masthan     Technical Writer 
 tp04     Satish      Technical Writer 
 tp05     Krishna     Technical Writer

Toutes les données que vous entrez dans une feuille de calcul sont toujours stockées dans une cellule. Nous utilisons les étiquettes des lignes et des colonnes pour identifier une cellule. Ce chapitre décrit comment manipuler les données dans les cellules d'une feuille de calcul à l'aide de la programmation Java.

Créer une cellule

Vous devez créer une ligne avant de créer une cellule. Une ligne n'est rien d'autre qu'une collection de cellules.

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

Le code suivant est utilisé pour créer différents types de cellules dans une feuille de calcul.

import java.io.File;
import java.io.FileOutputStream;

import java.util.Date;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TypesofCells {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("cell types");
      
      XSSFRow row = spreadsheet.createRow((short) 2);
      row.createCell(0).setCellValue("Type of Cell");
      row.createCell(1).setCellValue("cell value");
      
      row = spreadsheet.createRow((short) 3);
      row.createCell(0).setCellValue("set cell type BLANK");
      row.createCell(1);
      
      row = spreadsheet.createRow((short) 4);
      row.createCell(0).setCellValue("set cell type BOOLEAN");
      row.createCell(1).setCellValue(true);
      
      row = spreadsheet.createRow((short) 5);
      row.createCell(0).setCellValue("set cell type ERROR");
      row.createCell(1).setCellValue(XSSFCell.CELL_TYPE_ERROR );
      
      row = spreadsheet.createRow((short) 6);
      row.createCell(0).setCellValue("set cell type date");
      row.createCell(1).setCellValue(new Date());
      
      row = spreadsheet.createRow((short) 7);
      row.createCell(0).setCellValue("set cell type numeric");
      row.createCell(1).setCellValue(20 );
      
      row = spreadsheet.createRow((short) 8);
      row.createCell(0).setCellValue("set cell type string");
      row.createCell(1).setCellValue("A String");
      
      FileOutputStream out = new FileOutputStream(new File("typesofcells.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("typesofcells.xlsx written successfully");
   }
}

Enregistrez le code ci-dessus dans un fichier nommé TypesofCells.java, compilez-le et exécutez-le à partir de l'invite de commande comme suit.

$javac TypesofCells.java $java TypesofCells

Si votre système est configuré avec la bibliothèque POI, il se compilera et s'exécutera pour générer un fichier Excel nommé typesofcells.xlsx dans votre répertoire actuel et affichez la sortie suivante.

typesofcells.xlsx written successfully

le typesofcells.xlsx Le fichier ressemble à ce qui suit.

Styles de cellule

Ici, vous pouvez apprendre à mettre en forme les cellules et à appliquer différents styles tels que la fusion de cellules adjacentes, l'ajout de bordures, la définition de l'alignement des cellules et le remplissage avec des couleurs.

Le code suivant est utilisé pour appliquer différents styles aux cellules à l'aide de la programmation Java.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class CellStyle {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("cellstyle");
      XSSFRow row = spreadsheet.createRow((short) 1);
      row.setHeight((short) 800);
      XSSFCell cell = (XSSFCell) row.createCell((short) 1);
      cell.setCellValue("test of merging");

      //MEARGING CELLS 
      //this statement for merging cells

      spreadsheet.addMergedRegion(
         new CellRangeAddress(
            1, //first row (0-based)
            1, //last row (0-based)
            1, //first column (0-based)
            4 //last column (0-based)
         )
      );
      
      //CELL Alignment
      row = spreadsheet.createRow(5); 
      cell = (XSSFCell) row.createCell(0);
      row.setHeight((short) 800);
      
      // Top Left alignment 
      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);
      row = spreadsheet.createRow(6); 
      cell = (XSSFCell) row.createCell(1);
      row.setHeight((short) 800);
      
      // Center Align Cell Contents 
      XSSFCellStyle style2 = workbook.createCellStyle();
      style2.setAlignment(XSSFCellStyle.ALIGN_CENTER);
      style2.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
      cell.setCellValue("Center Aligned"); 
      cell.setCellStyle(style2);
      row = spreadsheet.createRow(7); 
      cell = (XSSFCell) row.createCell(2);
      row.setHeight((short) 800);
      
      // Bottom Right alignment 
      XSSFCellStyle style3 = workbook.createCellStyle();
      style3.setAlignment(XSSFCellStyle.ALIGN_RIGHT);
      style3.setVerticalAlignment(XSSFCellStyle.VERTICAL_BOTTOM);
      cell.setCellValue("Bottom Right");
      cell.setCellStyle(style3);
      row = spreadsheet.createRow(8);
      cell = (XSSFCell) row.createCell(3);
      
      // Justified Alignment 
      XSSFCellStyle style4 = workbook.createCellStyle();
      style4.setAlignment(XSSFCellStyle.ALIGN_JUSTIFY);
      style4.setVerticalAlignment(XSSFCellStyle.VERTICAL_JUSTIFY);
      cell.setCellValue("Contents are Justified in Alignment"); 
      cell.setCellStyle(style4);
      
      //CELL BORDER
      row = spreadsheet.createRow((short) 10);
      row.setHeight((short) 800);
      cell = (XSSFCell) row.createCell((short) 1);
      cell.setCellValue("BORDER");
      
      XSSFCellStyle style5 = workbook.createCellStyle();
      style5.setBorderBottom(XSSFCellStyle.BORDER_THICK);
      style5.setBottomBorderColor(IndexedColors.BLUE.getIndex());
      style5.setBorderLeft(XSSFCellStyle.BORDER_DOUBLE);
      style5.setLeftBorderColor(IndexedColors.GREEN.getIndex());
      style5.setBorderRight(XSSFCellStyle.BORDER_HAIR);
      style5.setRightBorderColor(IndexedColors.RED.getIndex());
      style5.setBorderTop(XSSFCellStyle.BIG_SPOTS);
      style5.setTopBorderColor(IndexedColors.CORAL.getIndex());
      cell.setCellStyle(style5);
      
      //Fill Colors
      //background color
      row = spreadsheet.createRow((short) 10 );
      cell = (XSSFCell) row.createCell((short) 1);
      
      XSSFCellStyle style6 = workbook.createCellStyle();
      style6.setFillBackgroundColor(HSSFColor.LEMON_CHIFFON.index );
      style6.setFillPattern(XSSFCellStyle.LESS_DOTS);
      style6.setAlignment(XSSFCellStyle.ALIGN_FILL);
      spreadsheet.setColumnWidth(1,8000);
      cell.setCellValue("FILL BACKGROUNG/FILL PATTERN");
      cell.setCellStyle(style6);
      
      //Foreground color
      row = spreadsheet.createRow((short) 12);
      cell = (XSSFCell) row.createCell((short) 1);
      
      XSSFCellStyle style7 = workbook.createCellStyle();
      style7.setFillForegroundColor(HSSFColor.BLUE.index);
      style7.setFillPattern( XSSFCellStyle.LESS_DOTS);
      style7.setAlignment(XSSFCellStyle.ALIGN_FILL);
      cell.setCellValue("FILL FOREGROUND/FILL PATTERN");
      cell.setCellStyle(style7);

      FileOutputStream out = new FileOutputStream(new File("cellstyle.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("cellstyle.xlsx written successfully");
   }
}

Enregistrez le code ci-dessus dans un fichier nommé CellStyle.java, compilez-le et exécutez-le à partir de l'invite de commande comme suit.

$javac CellStyle.java $java CellStyle

Il générera un fichier Excel nommé cellstyle.xlsx dans votre répertoire actuel et affichez la sortie suivante.

cellstyle.xlsx written successfully

Le fichier cellstyle.xlsx se présente comme suit.

Ce chapitre explique comment définir différentes polices, appliquer des styles et afficher du texte sous différents angles de direction dans une feuille de calcul Excel.

Chaque système est livré avec une énorme collection de polices telles que Arial, Impact, Times New Roman, etc. La collection peut également être mise à jour avec de nouvelles polices, si nécessaire. De même, il existe différents styles dans lesquels une police peut être affichée, par exemple, gras, italique, souligné, barré, etc.

Polices et styles de police

Le code suivant est utilisé pour appliquer une police et un style particuliers au contenu d'une cellule.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class FontStyle {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Fontstyle");
      XSSFRow row = spreadsheet.createRow(2);

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

      // Create a cell with a value and set style to it.
      XSSFCell cell = row.createCell(1);
      cell.setCellValue("Font Style");
      cell.setCellStyle(style);
      
      FileOutputStream out = new FileOutputStream(new File("fontstyle.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("fontstyle.xlsx written successfully");
   }
}

Sauvegardons le code ci-dessus dans un fichier nommé FontStyle.java. Compilez et exécutez-le à partir de l'invite de commande comme suit.

$javac FontStyle.java $java FontStyle

Il génère un fichier Excel nommé fontstyle.xlsx dans votre répertoire actuel et affichez la sortie suivante sur l'invite de commande.

fontstyle.xlsx written successfully

le fontstyle.xlsx Le fichier ressemble à ce qui suit.

Direction du texte

Ici, vous pouvez apprendre à définir la direction du texte sous différents angles. En général, le contenu des cellules est affiché horizontalement, de gauche à droite et à un angle 00; toutefois, vous pouvez utiliser le code suivant pour faire pivoter le sens du texte, si nécessaire.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TextDirection {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Text direction");
      XSSFRow row = spreadsheet.createRow(2);
      XSSFCellStyle myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 0);
      XSSFCell cell = row.createCell(1);
      cell.setCellValue("0D angle");
      cell.setCellStyle(myStyle);

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

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

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

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

      //360 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 360);
      cell = row.createCell(12);
      cell.setCellValue("360D angle");
      cell.setCellStyle(myStyle);
      
      FileOutputStream out = new FileOutputStream(new File("textdirection.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("textdirection.xlsx written successfully");
   }
}

Conservez le code ci-dessus dans TextDirectin.java fichier, puis compilez-le et exécutez-le à partir de l'invite de commande comme suit.

$javac TextDirection.java $java TextDirection

Il se compilera et s'exécutera pour générer un fichier Excel nommé textdirection.xlsx dans votre répertoire actuel et affichez la sortie suivante sur l'invite de commande.

textdirection.xlsx written successfully

le textdirection.xlsx Le fichier ressemble à ce qui suit.

Ce chapitre vous guide tout au long du processus d'application de différentes formules sur des cellules à l'aide de la programmation Java. L'objectif de base de l'application Excel est de conserver les données numériques en appliquant des formules dessus.

Dans une formule, nous transmettons des valeurs dynamiques ou des emplacements des valeurs dans la feuille Excel. En exécutant cette formule, vous obtenez le résultat souhaité. Le tableau suivant répertorie quelques formules de base fréquemment utilisées dans Excel.

Opération Syntaxe
Ajouter plusieurs numéros = SOMME (Loc1: Locn) or = SOMME (n1, n2,)
Compter = COUNT (Loc1: Locn) or = COUNT (n1, n2,)
Puissance de deux nombres = PUISSANCE (Loc1, Loc2) or = PUISSANCE (nombre, puissance)
Max de plusieurs nombres = MAX (Loc1: Locn) or = MAX (n1, n2,)
Produit = PRODUIT (Loc1: Locn) or = PRODUIT (n1, n2,)
Factorielle = FAIT (Locn) or = FAIT (nombre)
Nombre absolu = ABS (Locn) or = ABS (nombre)
La date d'aujourd'hui = AUJOURD'HUI ()
Convertit les minuscules = INFÉRIEUR (Locn) or = LOWER (texte)
Racine carrée = SQRT (locn) or = SQRT (nombre)

Le code suivant est utilisé pour ajouter des formules à une cellule et l'exécuter.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Formula {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("formula");
      XSSFRow row = spreadsheet.createRow(1);
      XSSFCell cell = row.createCell(1);
      
      cell.setCellValue("A = ");
      cell = row.createCell(2);
      cell.setCellValue(2);
      row = spreadsheet.createRow(2);
      cell = row.createCell(1);
      cell.setCellValue("B = ");
      cell = row.createCell(2);
      cell.setCellValue(4);
      row = spreadsheet.createRow(3);
      cell = row.createCell(1);
      cell.setCellValue("Total = ");
      cell = row.createCell(2);
      
      // Create SUM formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("SUM(C2:C3)");
      cell = row.createCell(3);
      cell.setCellValue("SUM(C2:C3)");
      row = spreadsheet.createRow(4);
      cell = row.createCell(1);
      cell.setCellValue("POWER =");
      cell=row.createCell(2);
      
      // Create POWER formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("POWER(C2,C3)");
      cell = row.createCell(3);
      cell.setCellValue("POWER(C2,C3)");
      row = spreadsheet.createRow(5);
      cell = row.createCell(1);
      cell.setCellValue("MAX = ");
      cell = row.createCell(2);
      
      // Create MAX formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("MAX(C2,C3)");
      cell = row.createCell(3);
      cell.setCellValue("MAX(C2,C3)");
      row = spreadsheet.createRow(6);
      cell = row.createCell(1);
      cell.setCellValue("FACT = ");
      cell = row.createCell(2);
      
      // Create FACT formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("FACT(C3)");
      cell = row.createCell(3);
      cell.setCellValue("FACT(C3)");
      row = spreadsheet.createRow(7);
      cell = row.createCell(1);
      cell.setCellValue("SQRT = ");
      cell = row.createCell(2);
      
      // Create SQRT formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("SQRT(C5)");
      cell = row.createCell(3);
      cell.setCellValue("SQRT(C5)");
      workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
      FileOutputStream out = new FileOutputStream(new File("formula.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("fromula.xlsx written successfully");
   }
}

Enregistrez le code ci-dessus sous Formula.java puis compilez et exécutez-le à partir de l'invite de commande comme suit.

$javac Formula.java $java Formula

Il générera un fichier Excel nommé formula.xlsx dans votre répertoire actuel et affichez la sortie suivante sur l'invite de commande.

fromula.xlsx written successfully

le formula.xlsx Le fichier ressemble à ce qui suit.

Ce chapitre explique comment ajouter des hyperliens au contenu d'une cellule. Les hyperliens sont généralement utilisés pour accéder à n'importe quelle URL Web, e-mail ou fichier externe.

Le code suivant montre comment créer des liens hypertexte sur des cellules.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.common.usermodel.Hyperlink;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFHyperlink;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class HyperlinkEX {
   public static void main(String[] args) throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Hyperlinks");
      XSSFCell cell;
      CreationHelper createHelper = workbook.getCreationHelper();
      XSSFCellStyle hlinkstyle = workbook.createCellStyle();
      XSSFFont hlinkfont = workbook.createFont();
      hlinkfont.setUnderline(XSSFFont.U_SINGLE);
      hlinkfont.setColor(HSSFColor.BLUE.index);
      hlinkstyle.setFont(hlinkfont);

      //URL Link
      cell = spreadsheet.createRow(1).createCell((short) 1);
      cell.setCellValue("URL Link");
      XSSFHyperlink link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_URL);
      link.setAddress("http://www.tutorialspoint.com/");
      cell.setHyperlink((XSSFHyperlink) link);
      cell.setCellStyle(hlinkstyle);

      //Hyperlink to a file in the current directory
      cell = spreadsheet.createRow(2).createCell((short) 1);
      cell.setCellValue("File Link");
      link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_FILE);
      link.setAddress("cellstyle.xlsx");
      cell.setHyperlink(link);
      cell.setCellStyle(hlinkstyle);

      //e-mail link
      cell = spreadsheet.createRow(3).createCell((short) 1);
      cell.setCellValue("Email Link");
      link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_EMAIL);
      link.setAddress("mailto:[email protected]?" + "subject = Hyperlink");
      cell.setHyperlink(link);
      cell.setCellStyle(hlinkstyle);
      
      FileOutputStream out = new FileOutputStream(new File("hyperlink.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("hyperlink.xlsx written successfully");
   }
}

Enregistrez le code ci-dessus sous HyperlinkEX.java. Compilez et exécutez-le à partir de l'invite de commande comme suit.

$javac HyperlinkEX.java $java HyperlinkEX

Il générera un fichier Excel nommé hyperlink.xlsx dans votre répertoire actuel et affichez la sortie suivante sur l'invite de commande.

hyperlink.xlsx written successfully

le hyperlink.xlsx Le fichier ressemble à ce qui suit.

Ce chapitre explique comment définir la zone d'impression sur une feuille de calcul. La zone d'impression habituelle est de haut à gauche en bas à droite sur les feuilles de calcul Excel. La zone d'impression peut être personnalisée selon vos besoins. Cela signifie que vous pouvez imprimer une plage particulière de cellules à partir de la feuille de calcul entière, personnaliser le format du papier, imprimer le contenu avec les lignes de la grille activées, etc.

Le code suivant est utilisé pour configurer la zone d'impression sur une feuille de calcul.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFPrintSetup;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class PrintArea {
   public static void main(String[] args)throws Exception {
      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);
      
      FileOutputStream out = new FileOutputStream(new File("printarea.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("printarea.xlsx written successfully"); 
   }
}

Sauvegardons le code ci-dessus sous PrintArea.java. Compilez et exécutez-le à partir de l'invite de commande comme suit.

$javac PrintArea.java $java PrintArea

Il générera un fichier nommé printarea.xlsx dans votre répertoire actuel et affichez la sortie suivante sur l'invite de commande.

printarea.xlsx written successfully

Dans le code ci-dessus, nous n'avons ajouté aucune valeur de cellule. Par conséquentprintarea.xlsxest un fichier vierge. Mais vous pouvez observer dans la figure suivante que l'aperçu avant impression montre la zone d'impression avec des lignes de quadrillage.

Ce chapitre explique comment la bibliothèque POI interagit avec une base de données. Avec l'aide de JDBC, vous pouvez récupérer des données d'une base de données et insérer ces données dans une feuille de calcul à l'aide de la bibliothèque POI. Considérons la base de données MySQL pour les opérations SQL.

Écrire dans Excel à partir de la base de données

Supposons que le tableau de données sur les employés suivant appelé emp_tbl doit être récupéré de la base de données MySQL test.

ID EMP NOM EMP DEG UN SALAIRE DEPT
1201 Gopal Directeur technique 45 000 IL
1202 Manisha Lecteur d'épreuves 45 000 Essai
1203 Masthanvali Rédacteur technique 45 000 IL
1204 Kiran Administrateur RH 40000 HEURE
1205 Kranthi Administrateur des opérations 30000 Administrateur

Utilisez le code suivant pour récupérer des données dans une base de données et les insérer dans une feuille de calcul.

import java.io.File;
import java.io.FileOutputStream;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelDatabase {
   public static void main(String[] args) throws Exception {
      Class.forName("com.mysql.jdbc.Driver");
      Connection connect = DriverManager.getConnection( 
         "jdbc:mysql://localhost:3306/test" , 
         "root" , 
         "root"
      );
      
      Statement statement = connect.createStatement();
      ResultSet resultSet = statement.executeQuery("select * from emp_tbl");
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("employe db");
      
      XSSFRow row = spreadsheet.createRow(1);
      XSSFCell cell;
      cell = row.createCell(1);
      cell.setCellValue("EMP ID");
      cell = row.createCell(2);
      cell.setCellValue("EMP NAME");
      cell = row.createCell(3);
      cell.setCellValue("DEG");
      cell = row.createCell(4);
      cell.setCellValue("SALARY");
      cell = row.createCell(5);
      cell.setCellValue("DEPT");
      int i = 2;

      while(resultSet.next()) {
         row = spreadsheet.createRow(i);
         cell = row.createCell(1);
         cell.setCellValue(resultSet.getInt("eid"));
         cell = row.createCell(2);
         cell.setCellValue(resultSet.getString("ename"));
         cell = row.createCell(3);
         cell.setCellValue(resultSet.getString("deg"));
         cell = row.createCell(4);
         cell.setCellValue(resultSet.getString("salary"));
         cell = row.createCell(5);
         cell.setCellValue(resultSet.getString("dept"));
         i++;
      }

      FileOutputStream out = new FileOutputStream(new File("exceldatabase.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("exceldatabase.xlsx written successfully");
   }
}

Sauvegardons le code ci-dessus sous ExcelDatabase.java. Compilez et exécutez-le à partir de l'invite de commande comme suit.

$javac ExcelDatabase.java $java ExcelDatabase

Il générera un fichier Excel nommé exceldatabase.xlsx dans votre répertoire actuel et affichez la sortie suivante sur l'invite de commande.

exceldatabase.xlsx written successfully

le exceldatabase.xlsx Le fichier ressemble à ce qui suit.