Définition de formules dans Excel avec Apache POI

1. Vue d'ensemble

Dans ce tutoriel rapide, nous allons parler de la façon dont nous pouvons définir des formules dans une feuille de calcul Microsoft Excel à l' aide d' Apache POI à travers un exemple simple.

2. POI Apache

Apache POI est une bibliothèque Java open source populaire qui fournit aux programmeurs des API pour créer, modifier et afficher des fichiers MS Office .

Il utilise Workbook pour représenter un fichier Excel et ses éléments. Une cellule dans un fichier Excel peut avoir différents types tels que FORMULE .

Afin de voir Apache POI en action, nous allons définir une formule pour soustraire la somme des valeurs des colonnes A et B dans un fichier Excel. Le fichier lié contient les données ci-dessous:

3. Dépendances

Tout d'abord, nous devons ajouter la dépendance POI à notre fichier de projet pom.xml . Pour travailler avec les classeurs Excel 2007+, nous devons utiliser poi-ooxml :

 org.apache.poi poi-ooxml 4.1.2 

Notez que pour les versions antérieures d'Excel, nous devons utiliser la dépendance poi à la place.

4. Recherche de cellule

Pour commencer, ouvrons d'abord notre fichier et construisons le classeur approprié:

FileInputStream inputStream = new FileInputStream(new File(fileLocation)); XSSFWorkbook excel = new XSSFWorkbook(inputStream);

Ensuite, nous devons créer ou rechercher la cellule que nous allons utiliser . En utilisant les données partagées précédemment, nous voulons éditer la cellule C1.

C'est sur la première feuille et la première ligne, et nous pouvons demander POI pour la première colonne vide:

XSSFSheet sheet = excel.getSheetAt(0); int lastCellNum = sheet.getRow(0).getLastCellNum(); XSSFCell formulaCell = sheet.getRow(0).createCell(lastCellNum + 1);

5. Formules

Ensuite, nous voulons définir une formule sur la cellule que nous avons recherchée.

Comme indiqué précédemment, soustrayons la somme de la colonne B de la somme de la colonne A. Dans Excel, ce serait:

=SUM(A:A)-SUM(B:B)

Et nous pouvons l'écrire dans notre formulaCell avec la méthode setCellFormula :

formulaCell.setCellFormula("SUM(A:A)-SUM(B:B)");

Maintenant, cela n'évalue pas la formule. Pour ce faire, nous devrons utiliser XSSFFormulaEvaluator de POI :

XSSFFormulaEvaluator formulaEvaluator = excel.getCreationHelper().createFormulaEvaluator(); formulaEvaluator.evaluateFormulaCell(formulaCell);

Le résultat sera défini dans la première cellule de la colonne vide suivante:

Comme nous pouvons le voir, le résultat est calculé et enregistré dans la première cellule de la colonne C. La formule est également affichée dans la barre de formule.

Notez que la classe FormulaEvaluator nous fournit d'autres méthodes pour évaluer FORMULA dans les classeurs Excel, comme evaluAll , qui bouclera sur toutes les cellules et les évaluera.

6. Conclusion

Dans ce didacticiel, nous avons montré comment définir une formule sur une cellule dans un fichier Excel en Java à l'aide de l'API Apache POI.

Le code source complet de cet articleest disponible à l'adresse over sur GitHub.