Dans notre article précédent, nous avons parcouru les détails d’Apache POI, une API Java open source pour travailler avec des formats de fichiers Microsoft. Dans cet article, nous allons passer par le composant Apache POI pour travailler avec Excel Workbooks. Nous montrerons également comment utiliser Apache POI pour créer un fichier Excel et y ajouter des feuilles à l’aide de cette bibliothèque Java.

apache poi java API pour accéder aux formats de fichiers Excel

L’API APACH POI Java fournit des composants distincts pour travailler avec deux formats de fichiers Excel différents. Ceux-ci sont:

  1. HSSF (horrible format de feuille de calcul) - Pour travailler avec les formats de fichiers Excel 97-2003
  2. XSSF (Format de feuille de calcul XML) - pour travailler avec Excel 2007 et ultérieurs Formats de fichiers Plus précisément, HSSF vous permet de lire les fichiers xls tandis que xssf vous permet de lire xls et xlsx fichiers. Ces deux API vous permettent de créer, de lire et de manipuler des fichiers Excel à partir de votre application Java sans entrer dans les détails des formats de fichiers sous-jacents.

Comment créer un fichier Excel XLSX dans Java?

Dans cet exemple, nous allons passer par les détails de l’utilisation d’Apache POI XSSF pour créer des fichiers XLSX dans notre application Java. À ce stade, nous supposons que vous avez déjà installé et configuré l’API APACH POI dans votre application Java. Si vous ne l’avez pas fait, vous pouvez visiter Installer Apache POI pour Java et suivre les étapes.

étapes pour créer un classeur Excel à l’aide d’Apache poi

La création d’un classeur Excel utilisant l’API APACH POI pour Java est simple et facile, et peut être réalisée en utilisant les étapes suivantes.

  1. Créez un classeur en utilisant la classe XSSFWorkBook
  2. Fermez le flux de sortie. Le code Java pour créer un classeur Excel à l’aide d’Apache POI est le suivant.
XSSFWorkbook wb = new XSSFWorkbook();
...
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
    wb.write(fileOut);
}

Le code ci-dessus créera un classeur Excel au format de fichier xlsx. Cependant, si vous ouvrez le classeur à ce stade, vous recevrez l’erreur suivante.

La raison en est qu’un classeur Excel utilisant Apache POI sans aucune feuille de calcul donne cette erreur. Afin de résoudre ce problème, nous devons ajouter au moins une feuille de calcul au fichier Excel généré.

Ajouter une feuille de travail à Excel Workbook avec Apache POI dans Java

Cela nous amène à l’étape où nous devons ajouter une feuille de travail au classeur afin de fonctionner correctement. Cela peut être réalisé en utilisant l’objet XSSFSheet qui est ajouté au classeur comme indiqué dans l’échantillon de code suivant.

XSSFWorkbook wb1 = new XSSFWorkbook();
try
{
	XSSFSheet sheet1 = wb1.createSheet("Ripon");
	FileOutputStream fileOut = new FileOutputStream("workbook.xlsx");
	wb1.write(fileOut);    
	fileOut.close();
}
catch(Exception ex)
{
	System.out.println("XLSX Generated Error...");
}

Exemple complet de XSSFWorkBook

Maintenant que nous avons vu comment créer un classeur et y ajouter une feuille avec API POI API pour Java, examinons comment nous ajouterons des lignes et des cellules à la feuille de calcul créée. La classe XSSFSheet a la méthode Createrow qui vous permet d’ajouter une ligne à la feuille. Cela renvoie un objet de la classe de ligne qui représente une ligne dans la feuille de calcul Excel. Afin de créer des cellules dans la feuille de calcul, nous devons utiliser la méthode CreateCell qui renvoie un objet de classe XSSFCELL. La méthode SetCellValue du XSSFCELL est utilisée pour définir la valeur de la cellule. Un exemple complet de la création d’un classeur à l’aide de XSSFWorkBook, de l’ajout d’une feuille à l’aide de XSSFSheet, et l’ajout de XSSFrow est illustré ci-dessous.

// Blank workbook
        XSSFWorkbook workbook = new XSSFWorkbook();
        // Creating a blank Excel sheet
        XSSFSheet sheet = workbook.createSheet("student Details");
        // Creating an empty TreeMap of string and Object][] type
        Map<String, Object[]> data = new TreeMap<String, Object[]>();
        // Writing data to Object[]
        // using put() method
        data.put("1", new Object[] { "ID", "CITY", "STATE" });
        data.put("2", new Object[] { 1, "Clanton", "Alabama" });
        data.put("3", new Object[] { 2, "Cordova", "Alaska" });
        data.put("4", new Object[] { 3, "Clifton", "Arizona" });
        data.put("5", new Object[] { 4, "Arcadia", "California" });
  
	// Iterating over data and writing it to sheet
	Set<String> keyset = data.keySet(); 
        int rownum = 0;
        for (String key : keyset) { 
            // Creating a new row in the sheet
            XSSFRow row = sheet.createRow(rownum++); 
            Object[] objArr = data.get(key); 
            int cellnum = 0; 
            for (Object obj : objArr) { 
                // This line creates a cell in the next column of that row
                XSSFCell cell = row.createCell(cellnum++); 
                if (obj instanceof String)
                    cell.setCellValue((String)obj); 
                else if (obj instanceof Integer)
                    cell.setCellValue((Integer)obj);
            }
        }     
        // Writing the workbook
        FileOutputStream out = new FileOutputStream("gfgcontribute.xlsx");
        workbook.write(out); 
        // Closing file output connections
        out.close();

Conclusion

Dans cet article de blog, nous avons démontré comment créer un classeur Excel à l’aide d’API API POI pour Java. Nous avons utilisé le XSSFWorkBook pour générer un classeur XLSX, ajouté des feuilles de calcul, ajouté des lignes à la feuille de calcul et des données peuplées dans les cellules de la feuille de calcul. Pour plus d’exemples de travail avec des classeurs Excel à l’aide d’Apache POI pour Java, restez à l’écoute.