Come leggere/scrivere dati da un file Excel: Selenium POI
File IO è una parte fondamentale di qualsiasi processo software. Creiamo spesso un file, lo apriamo e aggiorniamo qualcosa o lo eliminiamo nei nostri computer. Lo stesso è il caso di Selenium Automazione. Abbiamo bisogno di un processo con cui manipolare i file Selenium.
Java ci fornisce diverse classi per la manipolazione dei file Selenium. In questo tutorial impareremo come leggere e scrivere Excel file con l'aiuto di Java Pacchetto IO e Apache Libreria POI.
PDI Apache in Selenium
. PDI Apache in Selenium è un'API ampiamente utilizzata per i test basati sui dati di selenio. È una libreria POI scritta in Java che fornisce agli utenti un'API per la manipolazione Microsoft documenti come .xls e .xlsx. Gli utenti possono facilmente creare, modificare e leggere/scrivere in file Excel. POI sta per "Implementazione di offuscamento scadente".
Esportazione di Excel
Come gestire il file Excel utilizzando POI (dipendenza Maven POM)
Per leggere e scrivere file Excel Java, Apache fornisce una libreria POI molto famosa. Questa libreria è sufficientemente in grado di leggere e scrivere entrambi XLS e XLSX formato file di Excel.
Leggere XLS file, un HSSF l'implementazione è fornita dalla libreria POI.
Leggere XLSX, XSSF implementazione di POI biblioteca sarà la scelta. Studiamo queste implementazioni in dettaglio.
Se stai utilizzando Maven nel tuo progetto, la dipendenza Maven sarà
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
Oppure puoi semplicemente scaricare l'ultima versione dei POI jar da http://poi.apache.org/download.html e scarica l'ultimo file zip
Quando scarichi il file zip per questo jar, devi decomprimerlo e aggiungere tutti questi jar al percorso classe del tuo progetto.
Classi e interfacce nel POI

Di seguito è riportato un elenco di diversi Java Interfacce e classi in POI per leggere XLS e XLSX filetto-
- Cartella di lavoro: Le classi XSSFWorkbook e HSSFWorkbook implementano questa interfaccia.
- Cartella di lavoro XSSF: è una rappresentazione di classe del file XLSX.
- Cartella di lavoro HSSF: è una rappresentazione di classe del file XLS.
- Foglio: Le classi XSSFSheet e HSSFSheet implementano questa interfaccia.
- XSSFSheet: è una classe che rappresenta un foglio in un file XLSX.
- Foglio HSSF: è una classe che rappresenta un foglio in un file XLS.
- Riga: Le classi XSSFRow e HSSFRow implementano questa interfaccia.
- XSSFRow: è una classe che rappresenta una riga nel foglio del file XLSX.
- HSSFRow: è una classe che rappresenta una riga nel foglio del file XLS.
- Cella: Le classi XSSFCell e HSSFCell implementano questa interfaccia.
- XSSFCell: è una classe che rappresenta una cella in una riga di file XLSX.
- Cella HSSFC: È una classe che rappresenta una cella in una riga di file XLS.
Operazione di lettura/scrittura
Per il nostro esempio, considereremo di seguito il formato di file Excel indicato
Leggere i dati dal file Excel
Esempio completo: qui stiamo provando a leggere i dati da Excel in 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; public class ReadGuru99ExcelFile { public void readExcel(String filePath,String fileName,String sheetName) throws IOException{ //Create an object of File class to open xlsx file File file = new File(filePath+"\\"+fileName); //Create an object of FileInputStream class to read excel file FileInputStream inputStream = new FileInputStream(file); Workbook guru99Workbook = null; //Find the file extension by splitting file name in substring and getting only extension name String fileExtensionName = fileName.substring(fileName.indexOf(".")); //Check condition if the file is xlsx file if(fileExtensionName.equals(".xlsx")){ //If it is xlsx file then create object of XSSFWorkbook class guru99Workbook = new XSSFWorkbook(inputStream); } //Check condition if the file is xls file else if(fileExtensionName.equals(".xls")){ //If it is xls file then create object of HSSFWorkbook class guru99Workbook = new HSSFWorkbook(inputStream); } //Read sheet inside the workbook by its name Sheet guru99Sheet = guru99Workbook.getSheet(sheetName); //Find number of rows in excel file int rowCount = guru99Sheet.getLastRowNum()-guru99Sheet.getFirstRowNum(); //Create a loop over all the rows of excel file to read it for (int i = 0; i < rowCount+1; i++) { Row row = guru99Sheet.getRow(i); //Create a loop to print cell values in a row for (int j = 0; j < row.getLastCellNum(); j++) { //Print Excel data in console System.out.print(row.getCell(j).getStringCellValue()+"|| "); } System.out.println(); } } //Main function is calling readExcel function to read data from excel file public static void main(String...strings) throws IOException{ //Create an object of ReadGuru99ExcelFile class ReadGuru99ExcelFile objExcelFile = new ReadGuru99ExcelFile(); //Prepare the path of excel file String filePath = System.getProperty("user.dir")+"\\src\\excelExportAndFileIO"; //Call read file method of the class to read data objExcelFile.readExcel(filePath,"ExportExcel.xlsx","ExcelGuru99Demo"); } }
Nota: non stiamo utilizzando il file Test quadro qui. Esegui la lezione come Java Applicazione che utilizza la funzione leggi Excel in Selenium come mostrato nell'esempio sopra.
Scrivere i dati su file Excel
Esempio completo: qui stiamo provando a scrivere dati dal file Excel aggiungendo una nuova riga nel file 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; public class WriteGuru99ExcelFile { public void writeExcel(String filePath,String fileName,String sheetName,String[] dataToWrite) throws IOException{ //Create an object of File class to open xlsx file File file = new File(filePath+"\\"+fileName); //Create an object of FileInputStream class to read excel file FileInputStream inputStream = new FileInputStream(file); Workbook guru99Workbook = null; //Find the file extension by splitting file name in substring and getting only extension name String fileExtensionName = fileName.substring(fileName.indexOf(".")); //Check condition if the file is xlsx file if(fileExtensionName.equals(".xlsx")){ //If it is xlsx file then create object of XSSFWorkbook class guru99Workbook = new XSSFWorkbook(inputStream); } //Check condition if the file is xls file else if(fileExtensionName.equals(".xls")){ //If it is xls file then create object of XSSFWorkbook class guru99Workbook = new HSSFWorkbook(inputStream); } //Read excel sheet by sheet name Sheet sheet = guru99Workbook.getSheet(sheetName); //Get the current count of rows in excel file int rowCount = sheet.getLastRowNum()-sheet.getFirstRowNum(); //Get the first row from the sheet Row row = sheet.getRow(0); //Create a new row and append it at last of sheet Row newRow = sheet.createRow(rowCount+1); //Create a loop over the cell of newly created Row for(int j = 0; j < row.getLastCellNum(); j++){ //Fill data in row Cell cell = newRow.createCell(j); cell.setCellValue(dataToWrite[j]); } //Close input stream inputStream.close(); //Create an object of FileOutputStream class to create write data in excel file FileOutputStream outputStream = new FileOutputStream(file); //write data in the excel file guru99Workbook.write(outputStream); //close output stream outputStream.close(); } public static void main(String...strings) throws IOException{ //Create an array with the data in the same order in which you expect to be filled in excel file String[] valueToWrite = {"Mr. E","Noida"}; //Create an object of current class WriteGuru99ExcelFile objExcelFile = new WriteGuru99ExcelFile(); //Write the file using file name, sheet name and the data to be filled objExcelFile.writeExcel(System.getProperty("user.dir")+"\\src\\excelExportAndFileIO","ExportExcel.xlsx","ExcelGuru99Demo",valueToWrite); } }
Manipolazione di Excel utilizzando l'API JXL
JXL è anche un altro famoso jar in cui leggere file Excel Java e scrivere file. Al giorno d'oggi, il POI viene utilizzato nella maggior parte dei progetti, ma prima del POI esisteva solo JXL Java API per la manipolazione di Excel. È un'API molto piccola e semplice per la lettura di Excel Selenium.
CONSIGLI: Il mio suggerimento è di non utilizzare JXL in nessun nuovo progetto perché la libreria non è in sviluppo attivo dal 2010 e manca di funzionalità rispetto all'API POI.
Scarica JXL:
Se vuoi lavorare con JXL, puoi scaricarlo da questo link
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Puoi anche ottenere un esempio demo all'interno di questo file zippato per JXL.
Alcune delle caratteristiche:
- JXL è in grado di leggere file Excel Selenium per la cartella di lavoro 95, 97, 2000, XP, 2003.
- Possiamo lavorare con inglese, francese, spagnolo, tedesco.
- È possibile copiare un grafico e inserire immagini in Excel
Inconveniente:
- Possiamo scrivere solo in Excel 97 e versioni successive (la scrittura in Excel 95 non è supportata).
- JXL non supporta il formato XLSX del file Excel.
- Genera un foglio di calcolo in formato Excel 2000.
Sintesi
- Il file Excel può essere letto da Java Operazione IO. Per questo, dobbiamo usare Vaso POI Apache.
- Esistono due tipi di cartella di lavoro nel file Excel, XLSX e XLS File.
- Il POI ha diverse interfacce: cartella di lavoro, foglio, riga, cella.
- Queste interfacce vengono implementate mediante corrispondenti XLS (HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell) e XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) classi di manipolazione dei file.
- JXL è un'altra API per la gestione di Excel Selenium.
- JXL non può funzionare con il formato XLSX di Excel.