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)

Gestisci file Excel utilizzando POI

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à

Gestisci file Excel utilizzando POI

<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

Gestisci file Excel utilizzando POI

Quando scarichi il file zip per questo jar, devi decomprimerlo e aggiungere tutti questi jar al percorso classe del tuo progetto.

Gestisci file Excel utilizzando POI

Classi e interfacce nel POI

Classi e interfacce in Apache POI
Classi e interfacce in Apache 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

Leggi scrivi Operaproduzione

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.

Leggi i dati da un file Excel

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);

    }

}

Scrivi dati su file Excel

Manipolazione di Excel utilizzando l'API JXL

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/

Manipolazione di Excel utilizzando l'API JXL

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.