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
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 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.
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 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.
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
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.
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.
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);
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();
・ 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