[Java] Gérer les fichiers Excel avec Apache POI

Aperçu

Il est nécessaire de se référer et de sortir (créer) un fichier Excel à partir d'un programme Java en entreprise, et à ce moment-là, j'ai utilisé Apache POI pour le gérer, j'ai donc résumé les opérations de base.

Qu'est-ce que Apache POI?

Un des projets Apache, une bibliothèque 100% Java capable de lire et d'écrire des fichiers au format Microsoft Office tels que Word et Excel. _ * Le nom POI est ironiquement appelé "Poor Obfuscation Implementation" parce que le format était intentionnellement et à moitié obscurci lors de la rétro-ingénierie du format de fichier Office. Il est dérivé de l'acronyme de Damono. _

Obtention de POI Apache

Obtenez la bibliothèque sur le site Web officiel d'Apache POI. (La dernière version en mars 2020 est la 4.1.2, mais cette fois, c'était la dernière au moment du support commercial, implémentée dans la 3.17)

Exemple de code

Un exemple qui acquiert une valeur à partir d'un fichier Excel existant, ajoute le contenu et le renvoie dans un autre fichier Excel.

code

ApachePoiSample.java


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

public class ApachePoiSample {

	/**Chemin du fichier Excel d'entrée*/
	public static final String IN_EXCEL_FILE_PATH = "excel/in/sample.xlsx";
	/**Chemin du fichier Excel de sortie*/
	public static final String OUT_EXCEL_FILE_PATH = "excel/out/output.xlsx";

	public static void main(String[] args) {

		//----Ouvrez le fichier Excel----
		Workbook wb = null;
		try ( InputStream is = new FileInputStream(IN_EXCEL_FILE_PATH); ) {
			wb = WorkbookFactory.create(is);
		} catch (FileNotFoundException e) {
			//Se produit lorsque le fichier Excel cible n'existe pas
		    e.printStackTrace();
		} catch (IOException e) {
			//Se produit lorsque la lecture du fichier Excel cible échoue
		    e.printStackTrace();
		} catch (EncryptedDocumentException e) {
			//Se produit lorsqu'un mot de passe est défini pour le fichier Excel cible
			e.printStackTrace();
		} catch (InvalidFormatException e) {
			//Se produit lorsque le fichier Excel cible est dans un format non valide
			e.printStackTrace();
		}

		//Sélectionnez la feuille cible
		Sheet sheet1 = wb.getSheet("Sheet1");

		//----Obtenez la valeur de chaque cellule de la colonne A----
		System.out.println("<Entrée>");

		//Obtenez une chaîne
		Row row = sheet1.getRow(0);		//La première ligne
		Cell cell = row.getCell(0);		//Rangée A
		String a1 = cell.getStringCellValue();
		System.out.println("A1 : " + a1);

		//Obtenez le numéro
		row = sheet1.getRow(1);			//2e ligne
		cell = row.getCell(0);			//Rangée A
		double a2 = cell.getNumericCellValue();
		System.out.println("A2 : " + a2);

		//Obtenez la formule
		row = sheet1.getRow(2);			//3e ligne
		cell = row.getCell(0);			//Rangée A
		String a3 = cell.getCellFormula();
		System.out.println("A3 : " + a3);

		//----Ajouter une valeur à la colonne B pour la sortie (créer une nouvelle cellule car la colonne B est vide)----
		System.out.println("<Sortie>");

		//Sortie d'une chaîne de caractères
		row = sheet1.getRow(0);			//La première ligne
		cell = row.createCell(1);		//Création de la colonne B
		cell.setCellValue(a1 + a1);
		System.out.println("B1 : " + cell.getStringCellValue());

		//Valeur numérique de sortie
		row = sheet1.getRow(1);			//2e ligne
		cell = row.createCell(1);		//Création de la colonne B
		cell.setCellValue(a2 + a2);
		System.out.println("B2 : " + cell.getNumericCellValue());

		//Formule de sortie
		row = sheet1.getRow(2);			//3e ligne
		cell = row.createCell(1);		//Création de la colonne B
		cell.setCellFormula("B2*2");
		System.out.println("A3 : " + cell.getCellFormula());

		//----Sortie dans un fichier Excel----
		try ( FileOutputStream os = new FileOutputStream(OUT_EXCEL_FILE_PATH); ) {
			wb.write(os);
		} catch (FileNotFoundException e) {
			//Se produit lorsque le chemin spécifié n'existe pas dans la destination de sortie
			e.printStackTrace();
		} catch (IOException e) {
			//Se produit lorsque la sortie d'un fichier Excel échoue
			e.printStackTrace();
		}
	}

}

Résultat d'exécution

Fichier d'entrée (sample.xlsx)

Une chaîne de caractères (échantillon) est entrée dans la cellule A1, une valeur numérique (1,23) est entrée dans la cellule A2 et une formule (A2 * 2) est entrée dans la cellule A3. sample.xlsx

Journal de la console

Chaque valeur de la colonne A du fichier d'entrée a été acquise. Définissez également les valeurs du fichier de sortie comme suit.

<Entrée>
A1 : sample
A2 : 1.23
A3 : A2*2
<Sortie>
B1 : samplesample
B2 : 2.46
A3 : B2*2
Fichier de sortie (output.xlsx)

Chaque valeur définie dans le programme est sortie dans la colonne B. output.xlsx

Recommended Posts

[Java] Gérer les fichiers Excel avec Apache POI
Manipuler Excel avec Apache POI
Gérez les fichiers avec NIO.2.
[Java] Création d'un fichier Excel à l'aide d'Apache POI
[Apache POI] Version Excel correspondante
Convertissez de gros fichiers XLSX en CSV avec Apache POI
Opération Excel avec Apache POI
Exploitons Excel avec Java! !!
Remplacer le texte dans la forme automatique du fichier Excel par Apache POI
Apache POI Excel avec Kotlin
Sortie vers Excel en utilisant Apache POI!
Créer un fichier Excel avec POI
Téléchargez des fichiers volumineux avec Apache JMeter
Exemple de mise à jour de fichier EXCEL avec JAVA
[Java] Lecture et écriture de fichiers avec OpenCSV
[Kotlin] Supprimer les fichiers en double [Java]
Notes pour lire et générer des fichiers xlsx à partir de Java à l'aide d'Apache POI
[Java] Analyser les fichiers Excel (non limités à divers) avec Apathce Tika [Kotlin]
[Review] Lecture et écriture de fichiers avec java (JDK6)
[Java] Extraction de texte de PowerPoint (ppt) à l'aide d'Apache POI
Recherche par requête POST avec Azure Search + Java Apache HttpClient
[Java] Développement avec plusieurs fichiers en utilisant package et import
Installez java avec Homebrew
Changer de siège avec Java
Installez Java avec Ansible
Téléchargement confortable avec JAVA
Manipuler le dispositif avec des rails
Gérez JSON avec minimal-json
Changer java avec direnv
Téléchargement Java avec Ansible
Raclons avec Java! !!
Construire Java avec Wercker
Conversion Endian avec JAVA
Agrégation de fenêtres de données de capteurs avec Apache Flink et Java 8
Gérez l'API de date et d'heure Java 8 avec Thymeleaf avec Spring Boot
Comment gérer les exceptions froidement avec Java 8 Stream ou en option
Gérez les exceptions avec fraîcheur avec les expressions lambda Java 8 et l'API Stream
Évitez les erreurs de bombe Zip lors de la lecture de gros fichiers avec POI
Parlez du téléchargement de fichiers à l'aide de l'API Slack avec Apache HttpPost