[JAVA] Manipuler Excel avec Apache POI

Aperçu

Cet article présente une méthode d'implémentation très basique lors de l'utilisation du ** Apache POI ** de Java en option lorsque vous souhaitez effectuer une opération mécanique sur Excel, mais que l'écriture de macros est problématique. Je vais. Dans le domaine du développement de systèmes, de nombreux documents de conception sont souvent écrits dans Excel, et je pense qu'il y a des situations où il est difficile de vérifier un grand nombre de définitions de tableaux et d'éléments d'écran à la fois. Dans un tel cas, en tant que méthode autre que VBA (macro), la bibliothèque de "Apache POI" facilite la création d'outils avec Java, que vous connaissez bien.

Qu'est-ce que Apache POI?

Apache POI (Apache Poi ou PIO) est un projet de l'Apache Software Foundation et est fourni sous la forme d'une bibliothèque 100% Java capable de lire et d'écrire des fichiers au format Microsoft Office tels que Word et Excel. https://ja.wikipedia.org/wiki/Apache_POI

Réglage initial

Créez un projet Maven et ajoutez "** poi " et " poi-ooxml **" à la dépendance du fichier pom.xml. (Voir ci-dessous) Vous pouvez également utiliser des fichiers au format OOXML en ajoutant "poi-ooxml". En d'autres termes, POI peut être utilisé pour lire et écrire des fichiers au format 2007 avec des extensions telles que "xlsx" et "docx".

pom.xml


<dependencies>
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>[Spécifiez la version]</version>
  </dependency>
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>[Spécifiez la version]</version>
  </dependency>
</dependencies>

La dernière version semble être "** 4.0.1 **". (Au 1er février 2019) https://mvnrepository.com/artifact/org.apache.poi/poi/4.0.1 https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml/4.0.1

Implémentation de base

Lire des fichiers Excel

Fichier ouvert

Workbook workbook = WorkbookFactory.create(new File("Chemin du fichier"));

Ouvrez la feuille

//Si vous connaissez le nom de la feuille
Sheet sheet = workbook.getSheet("Nom de la feuille");

//Si vous connaissez le numéro de la feuille que vous souhaitez obtenir
//Le numéro de feuille est basé sur zéro
Sheet sheet = workbook.getSheetAt(0);

//Lors du traitement répété de toutes les feuilles
Iterator<Sheet> sheets = workbook.sheetIterator();
while(sheets.hasNext()) {
  Sheet sheet = sheets.next();
}

//Obtenir le nom de la feuille
String sheetName = inputSheet.getSheetName();

Obtenir la valeur de la cellule

//Obtenir la ligne
//Les numéros de ligne sont basés sur zéro
Row row = sheet.getRow("numéro de ligne");

//Obtenir la cellule
//Les numéros de colonne sont basés sur zéro
Cell cell = row.getCell("Index des colonnes");

//Obtenir le type de cellule
int cellType = cell.getCellType();

//Obtenez de la valeur avec getter en fonction du type
// String
cell.getStringCellValue();
// Boolean
cell.getBooleanCellValue()
// Formula
cell.getCellFormula();
// Numeric
cell.getNumericCellValue();
// etc

Création et sortie de fichiers Excel

Créer un fichier

//Format de fichier jusqu'à Excel 2003
Workbook outputWorkbook = new HSSFWorkbook();

//OOXML dans Excel 2007(Office Open XML)Format de fichier
Workbook outputWorkbook = new XSSFWorkbook();

Créer une feuille

Sheet outputSheet = outputWorkbook.createSheet();

Définir la valeur dans la cellule

//Créer une ligne
//Les numéros de ligne sont basés sur zéro
Row outputRow = outputSheet.createRow("numéro de ligne");

//Créer une cellule
//Les numéros de colonne sont basés sur zéro
Cell outputCell = outputRow.createCell("Index des colonnes");

//Définir la valeur dans la cellule
outputCell.setCellValue("Valeur que vous souhaitez définir");

Sortie dans un fichier

//Préparer un flux pour la sortie
FileOutputStream out = new FileOutputStream("Chemin du fichier de sortie");
//Sortie dans un fichier
outputWorkbook.write(out);

référence

Les outils que j'ai personnellement créés cette fois sont les suivants. C'est une implémentation assez grossière, mais elle supprime les parties nécessaires d'un grand nombre de fichiers Excel et les fusionne dans un seul fichier. https://github.com/yhayashi30/ExcelMergeTool

Recommended Posts

Manipuler Excel avec Apache POI
[Apache POI] Version Excel correspondante
Opération Excel avec Apache POI
Apache POI Excel avec Kotlin
Sortie vers Excel en utilisant Apache POI!
Remplacer le texte dans la forme automatique du fichier Excel par Apache POI
Créer un fichier Excel avec POI
[Java] Création d'un fichier Excel à l'aide d'Apache POI
Convertissez de gros fichiers XLSX en CSV avec Apache POI
Échantillon répété avec Apache Freemarker
Liste de points addictifs Apache POI
Démarrez Apache Solr avec Embedded.
Exploitons Excel avec Java! !!
Sortie CSV par Apache Commons CSV
Accédez à Apache Kafka avec Micronaut
apache POI mémo personnel crossfish21
Comment utiliser Apache POI
Sortie d'Excel avec des formules avec XlsMapper
Modèle de disjoncteur avec Apache Camel
exportation courante pour exceller en utilisant poi
Téléchargez des fichiers volumineux avec Apache JMeter
[Apache POI] Jugement des cellules inutiles
Exemple de mise à jour de fichier EXCEL avec JAVA
Redémarrez Apache avec l'image php-apache de Docker
FileUpload avec Rest sur Apache Wicket
[Linux] Démarrer le conteneur Apache avec Docker