[JAVA] Comment utiliser Apache POI

Aujourd'hui, je voudrais expliquer brièvement comment utiliser POI.

Veuillez vous référer au site officiel ci-dessous pour plus de détails Apache POI

Créer un classeur

Commencez par créer un classeur sur lequel travailler Une mise en garde est que si vous souhaitez lire un fichier existant, vous devez d'abord créer un FileInputStream. Dans le cas de l'écriture, ce n'est pas grave si vous générez un FileOutputStream lorsque vous voulez écrire

//Pour écrire
    Workbook workbook = new XSSFWorkbook();//Pour les fichiers xlsx et xlsm

    //Traitement divers

    //Génération de destination de sortie
    String filePath = "fichier Excel.xlsx"
    tyr(FileOutputStream output = new FileOutputStream(filePash)){
        //l'écriture
        workbook.write(output);
    }

//À lire
    //Génération source
    String filePath = "fichier Excel.xlsx"
    tyr(FileInputStream input = new FileInputStream(filePash)){
        //génération de classeur
        Workbook workbook = WorkbookFactory.create(input);
    
    //Traitement divers
    }

Si vous souhaitez travailler avec d'anciens fichiers xls, utilisez HSSF Workbook au lieu de XSSF Workbook pour générer le classeur.

Après cela, vous allez essentiellement créer une instance à l'aide d'un classeur.

Créer une feuille

Créer une feuille sur laquelle travailler Lors de l'écriture, utilisez createSheet pour générer une feuille et lors de la lecture, utilisez getSheet ou getSheetAt pour générer une feuille.

//Pour écrire
    Sheet sheet = workbook.createSheet("Nom de la feuille");

//À lire
    Sheet sheet = workbook.getSheetAt(0);//Obtenez la 0ème feuille
    //Ou
    Sheet sheet = workbook.getSheet("Nom de la feuille")//Nom de la feuilleがわかっている場合はこちらで

Lors de l'écriture et de la lecture de caractères, une instance dédiée sera créée à l'aide de la feuille créée cette fois.

Créer une ligne

Dans POI, cela devient une image qu'il n'y a pas de contenu simplement en créant une feuille Vous devez donc générer une ligne


//Pour écrire
    Row row = sheet.createRow(0);//Générer la ligne 0(Nombre de lignes à partir de la ligne 0)

//À lire
    Row row = sheet.getRow(0);//Lire la ligne 0

La mise en garde est que vous devez créer une ligne à l'avance. Comme utilisation, je pense que vous pouvez décider de la ligne maximale quelque part et générer autant de lignes qu'il y a ...

Générer une cellule

Générer une cellule pour chaque ligne Impossible de générer des cellules sans lignes


//Pour écrire
    Cell cell = row.createCell(0);

//À lire
    Cell cell = row.getCell(0);

Les caractères, couleurs, polices, etc. seront définis pour cette cellule.

Manipuler les personnages

Si tu peux faire ça, le reste est facile

//Pour écrire
    cell.setCellValue("AIUEO");

//À lire
    String cellValue = cell.getStringCellValue();

Utilisez la méthode getxxxCellValue pour lire Le type de données peut être spécifié pour xxx

Définir la police

Les polices sont une propriété du classeur et doivent être générées à partir du classeur Veuillez noter que si vous faites une erreur dans la portée de la police, la police sera définie dans toutes les cellules. Si vous souhaitez rendre la couleur et l'épaisseur différentes, veuillez générer différentes polices.

Font font = workbook.createFont();

//Soyez audacieux
    font.setBold(true);

//Changer la couleur des lettres
    //Générez d'abord la couleur
    XSSFColor color = new XSSFColor();
    color.setARGBHex("FF0000"/*rouge*/);//Lors de la spécification par code couleur
    //Ou
    XSSFColor color = new XSSFColor(new java.awt.Color(255,0,0)/*rouge*/);//Lors de la spécification en RVB
       
    //Définir la couleur de la police
    XSSFFont font = (XSSFFont) workbook.createFont();
    font.setColor(color);

Le POI peut nécessiter un downcast si vous récupérez une instance d'un classeur Si vous le recevez en tant que type de police (interface) au lieu de type XSSFFont, vous pouvez obtenir une erreur de compilation dans la partie de la méthode que vous souhaitez utiliser.

Définir la couleur d'arrière-plan de la cellule

Nous allons définir le style de cellule et appliquer le style de cellule à la cellule. Le style de cellule est une propriété de classeur, vous devez donc l'obtenir à partir du classeur Comme pour les polices, si vous souhaitez des couleurs d'arrière-plan différentes pour chaque cellule, vous devez générer différents styles de cellule.



//Générez d'abord la couleur
XSSFColor color = new XSSFColor();
color.setARGBHex("FF0000"/*rouge*/);

//Générer un style de cellule
XSSFCellStyle cellStyle = (XSSFCellStyle) workbook.createCellStyle();

//Définissez la couleur sur le style de cellule
cellStyle.setFillForegroundColor(color);

//Définir comment remplir
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);//Remplissez simplement

//Appliquer le style de cellule à la cellule
cell.setCellStyle(cellStyle);

Je fais un downcast lors de la génération d'un style de cellule De l'idée Java originale, il est préférable de le recevoir avec le type d'interface (CellStyle), mais comme il existe des méthodes qui ne peuvent être utilisées qu'avec XSSFCellStyle, il est reçu avec XSSFCellStyle.

Réglage de la bordure

Les bordures (bordures) sont définies à l'aide du style de cellule Ensuite, appliquez le style de cellule à la cellule ...

//Générer un style de cellule
XSSFCellStyle cellStyle = (XSSFCellStyle) workbook.createCellStyle();

//Réglage de la bordure
cellStyle.setBorderTop(BorderStyle.THIN/*Lignes fines fréquemment utilisées*/);//Paramètres de bordure supérieure
cellStyle.setBorderLeft(BorderStyle.THIN);//Réglage de la bordure gauche
cellStyle.setBorderRight(BorderStyle.THIN);//Réglage de la bordure droite
cellStyle.setBorderBottom(BorderStyle.THIN);//Réglage de la bordure inférieure

//Appliquer le style de cellule à la cellule
cell.setCellStyle(cellStyle);

Réglage automatique de la largeur de la cellule

Définir la largeur de cellule de la feuille Si vous avez le japonais, la largeur de la cellule sera un peu étroite, sauf si vous définissez explicitement la police.

//Générer une police
XSSFFont font = (XSSFFont) workbook.createFont();
font.setFontName("Yu gothique");//Vous pouvez utiliser le nom de la police en le copiant directement depuis Excel.

//Générer des styles de cellule et appliquer les paramètres de police
XSSFCellStyle cellStyle = (XSSFCellStyle) workbook.createCellStyle();
cellStyle.setFont(font);

//Ajuste automatiquement la largeur de toutes les cellules
sheet.autoSizeColumn();

prime

・ Il est recommandé de générer à l'avance le nombre requis de lignes et de cellules. Si vous le générez avec le style de cellule appliqué, tout ce que vous avez à faire est de modifier les valeurs de la cellule! J'obtiens une exception lorsque j'essaye d'accéder à une ligne qui n'a pas été générée

-Lorsque vous essayez de définir une valeur dans une cellule, si elle est nulle, rien n'est entré.

-Si vous souhaitez mettre quelque chose comme un nom de colonne de base de données dans un fichier Excel, vous devez créer cette partie vous-même.

Recommended Posts

Comment utiliser Apache POI
Comment utiliser Apache Derby sur Eclipse
Comment utiliser Map
Comment utiliser with_option
Comment utiliser fields_for
Comment utiliser java.util.logging
Comment utiliser la carte
Comment utiliser collection_select
Comment utiliser Twitter4J
Comment utiliser active_hash! !!
Comment utiliser MapStruct
Comment utiliser TreeSet
[Comment utiliser l'étiquette]
Comment utiliser le hachage
Comment utiliser Dozer.mapper
Comment utiliser Gradle
Comment utiliser org.immutables
Comment utiliser java.util.stream.Collector
Comment utiliser VisualVM
Comment utiliser Map
Comment utiliser l'API Chain
[Java] Comment utiliser Map
Comment utiliser Queue avec priorité
[Rails] Comment utiliser enum
Comment utiliser java Facultatif
Comment utiliser JUnit (débutant)
Comment utiliser le retour Ruby
[Rails] Comment utiliser enum
Comment utiliser @Builder (Lombok)
Comment utiliser la classe Java
Comment utiliser Big Decimal
Comment utiliser String [] args
Comment utiliser la jonction de rails
Comment utiliser Java Map
Ruby: Comment utiliser les cookies
Comment utiliser Dependant :: Destroy
Comment utiliser Eclipse Debug_Shell
[Rails] Comment utiliser la validation
Comment utiliser les variables Java
[Rails] Comment utiliser authenticate_user!
Comment utiliser GC Viewer
Comment utiliser Lombok maintenant
[Création] Comment utiliser JUnit
[Rails] Comment utiliser Scope
Comment utiliser la méthode link_to
Comment utiliser le tableau (mémorandum personnel)
Comment utiliser scope (JSP & Servlet)
Comment utiliser la méthode include?
[Rails] Comment utiliser l'appareil (Remarque)
Comment utiliser la méthode form_with
Comment utiliser EventBus3 et ThreadMode
Remarques sur l'utilisation de Spring Data JDBC
Comment utiliser binding.pry [53 jours restants]
Comment utiliser HttpClient de Java (Post)
[Java] Comment utiliser la méthode de jointure