Comment lire / écrire des données à partir d'un fichier Excel: POI Selenium

Table des matières:

Anonim

Les E / S de fichiers sont un élément essentiel de tout processus logiciel. Nous créons fréquemment un fichier, l'ouvrons et mettons à jour quelque chose ou le supprimons dans nos ordinateurs. Il en va de même avec Selenium Automation. Nous avons besoin d'un processus pour manipuler les fichiers avec Selenium.

Java nous fournit différentes classes pour la manipulation de fichiers avec Selenium. Dans ce didacticiel, nous allons apprendre comment lire et écrire sur un fichier Excel à l'aide du package Java IO et de la bibliothèque Apache POI.

Apache POI dans Selenium

Le POI Apache dans Selenium est une API largement utilisée pour les tests basés sur les données du sélénium. Il s'agit d'une bibliothèque de POI écrite en Java qui offre aux utilisateurs une API pour manipuler des documents Microsoft tels que .xls et .xlsx. Les utilisateurs peuvent facilement créer, modifier et lire / écrire dans des fichiers Excel. POI signifie «Poor Obfuscation Implementation».

  • Comment gérer un fichier Excel à l'aide de POI (dépendance Maven POM)
  • Classes et interfaces dans POI
  • Opération de lecture / écriture
  • Lire les données du fichier Excel
  • Écrire des données sur un fichier Excel
  • Manipulation d'Excel à l'aide de l'API JXL

Exporter Excel

Comment gérer un fichier Excel à l'aide de POI (dépendance Maven POM)

Pour lire et écrire un fichier Excel en Java, Apache fournit une très célèbre bibliothèque POI. Cette bibliothèque est suffisamment capable de lire et d'écrire les formats de fichier XLS et XLSX d'Excel.

Pour lire les fichiers XLS , une implémentation HSSF est fournie par la bibliothèque POI.

Pour lire XLSX, l' implémentation XSSF de la librairie POI sera le choix. Étudions ces implémentations en détail.

Si vous utilisez Maven dans votre projet, la dépendance Maven sera

 org.apache.poi  poi  4.1.1 

Ou vous pouvez simplement télécharger la dernière version des fichiers JAR POI à partir de http://poi.apache.org/download.html et télécharger le dernier fichier zip

Lorsque vous téléchargez le fichier zip de ce fichier jar, vous devez le décompresser et ajouter tous ces fichiers jar au chemin de classe de votre projet.

Classes et interfaces dans POI:

Classes et interfaces dans Apache POI

Voici une liste des différentes interfaces et classes Java dans POI pour la lecture de fichiers XLS et XLSX-

  • Workbook : les classes XSSFWorkbook et HSSFWorkbook implémentent cette interface.
  • XSSFWorkbook : est une représentation de classe du fichier XLSX.
  • HSSFWorkbook : est une représentation de classe d'un fichier XLS.
  • Feuille : les classes XSSFSheet et HSSFSheet implémentent cette interface.
  • XSSFSheet : est une classe représentant une feuille dans un fichier XLSX.
  • HSSFSheet : est une classe représentant une feuille dans un fichier XLS.
  • Ligne : les classes XSSFRow et HSSFRow implémentent cette interface.
  • XSSFRow : est une classe représentant une ligne dans la feuille du fichier XLSX.
  • HSSFRow : est une classe représentant une ligne dans la feuille du fichier XLS.
  • Cellule : les classes XSSFCell et HSSFCell implémentent cette interface.
  • XSSFCell : est une classe représentant une cellule dans une ligne de fichier XLSX.
  • HSSFCell: est une classe représentant une cellule dans une ligne de fichier XLS.

Opération de lecture / écriture

Pour notre exemple, nous considérerons ci-dessous le format de fichier Excel donné

Lire les données du fichier Excel

Exemple complet: Ici, nous essayons de lire les données d'Excel dans Selenium:

package excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;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.xssf.usermodel.XSSFWorkbook;classe publique ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) jette IOException {// Créer un objet de la classe File pour ouvrir le fichier xlsxFile file = nouveau fichier (filePath + "\\" + fileName);// Créer un objet de la classe FileInputStream pour lire le fichier ExcelFileInputStream inputStream = nouveau FileInputStream (fichier);Workbook guru99Workbook = null;// Trouvez l'extension de fichier en divisant le nom du fichier en sous-chaîne et en obtenant uniquement le nom de l'extensionString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Vérifier la condition si le fichier est un fichier xlsxif (fileExtensionName.equals (". xlsx")) {// S'il s'agit d'un fichier xlsx, créez un objet de la classe XSSFWorkbookguru99Workbook = nouveau XSSFWorkbook (inputStream);}// Vérifier la condition si le fichier est un fichier xlselse if (fileExtensionName.equals (". xls")) {// S'il s'agit d'un fichier xls, créez un objet de la classe HSSFWorkbookguru99Workbook = nouveau HSSFWorkbook (inputStream);}// Lire la feuille à l'intérieur du classeur par son nomFeuille guru99Sheet = guru99Workbook.getSheet (sheetName);// Trouver le nombre de lignes dans le fichier Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Crée une boucle sur toutes les lignes du fichier Excel pour le lirepour (int i = 0; i 

Remarque: nous n'utilisons pas le framework Testng ici. Exécutez la classe en tant qu'application Java à l'aide de la fonction read excel dans Selenium, comme indiqué dans l'exemple ci-dessus.

Écrire des données sur un fichier Excel

Exemple complet: Ici, nous essayons d'écrire des données à partir d'un fichier Excel en ajoutant une nouvelle ligne dans un fichier Excel

package excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;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.xssf.usermodel.XSSFWorkbook;classe publique WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) lève IOException {// Créer un objet de la classe File pour ouvrir le fichier xlsxFile file = nouveau fichier (filePath + "\\" + fileName);// Créer un objet de la classe FileInputStream pour lire le fichier ExcelFileInputStream inputStream = nouveau FileInputStream (fichier);Workbook guru99Workbook = null;// Trouvez l'extension de fichier en divisant le nom du fichier en sous-chaîne et en obtenant uniquement le nom de l'extensionString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Vérifier la condition si le fichier est un fichier xlsxif (fileExtensionName.equals (". xlsx")) {// S'il s'agit d'un fichier xlsx, créez un objet de la classe XSSFWorkbookguru99Workbook = nouveau XSSFWorkbook (inputStream);}// Vérifier la condition si le fichier est un fichier xlselse if (fileExtensionName.equals (". xls")) {// S'il s'agit d'un fichier xls, créez un objet de la classe XSSFWorkbookguru99Workbook = nouveau HSSFWorkbook (inputStream);}// Lire la feuille Excel par nom de feuilleFeuille de feuille = guru99Workbook.getSheet (nom de feuille);// Récupère le nombre actuel de lignes dans le fichier Excelint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Récupère la première ligne de la feuilleLigne de ligne = feuille.getRow (0);// Créer une nouvelle ligne et l'ajouter à la fin de la feuilleLigne newRow = sheet.createRow (rowCount + 1);// Crée une boucle sur la cellule de la ligne nouvellement crééepour (int j = 0; j 

Manipulation d'Excel à l'aide de l'API JXL

JXL est également un autre pot célèbre pour lire un fichier Excel en Java et écrire des fichiers. De nos jours, POI est utilisé dans la plupart des projets, mais avant POI, JXL n'était que l'API Java pour la manipulation d'Excel. C'est une API très petite et simple pour la lecture Excel dans Selenium.

CONSEILS: Ma suggestion est de ne pas utiliser JXL dans un nouveau projet car la bibliothèque n'est pas en développement actif à partir de 2010 et manque de fonctionnalité en comparaison avec l'API POI.

Télécharger JXL:

Si vous souhaitez travailler avec JXL, vous pouvez le télécharger à partir de ce lien

https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/

Vous pouvez également obtenir un exemple de démonstration dans ce fichier compressé pour JXL.

Certaines des fonctionnalités:

  • JXL est capable de lire le fichier Excel dans Selenium pour le classeur 95, 97, 2000, XP, 2003.
  • Nous pouvons travailler avec l'anglais, le français, l'espagnol, l'allemand.
  • Il est possible de copier un graphique et une image dans Excel

Inconvénient:

  • Nous pouvons écrire Excel 97 et versions ultérieures uniquement (l'écriture dans Excel 95 n'est pas prise en charge).
  • JXL ne prend pas en charge le format XLSX du fichier Excel.
  • Il génère une feuille de calcul au format Excel 2000.

Résumé:

  • Le fichier Excel peut être lu par une opération Java IO. Pour cela, nous devons utiliser Apache POI Jar .
  • Il existe deux types de classeur dans un fichier Excel, les fichiers XLSX et XLS .
  • POI a différentes interfaces: classeur, feuille, ligne, cellule.
  • Ces interfaces sont implémentées par les classes de manipulation de fichiers XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) et XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ) correspondantes.
  • JXL est une autre API pour la gestion d'Excel dans Selenium.
  • JXL ne peut pas fonctionner avec le format XLSX d'Excel.