Cómo leer/escribir datos desde un archivo Excel: Selenium POI

File IO es una parte crítica de cualquier proceso de software. Con frecuencia creamos un archivo, lo abrimos y actualizamos algo o lo eliminamos en nuestras computadoras. Lo mismo ocurre con Selenium Automation. Necesitamos un proceso para manipular archivos con Selenium.

Java nos proporciona diferentes clases para la manipulación de archivos con Selenium. En este tutorial, vamos a aprender cómo podemos leer y escribir en Excel archivo con la ayuda de Java paquete IO y APACHE Biblioteca de puntos de interés.

PDI de Apache en selenio

El PDI de Apache en selenio es una API ampliamente utilizada para pruebas basadas en datos de selenio. Es una biblioteca de puntos de interés escrita en Java que brinda a los usuarios una API para manipular Microsoft documentos como .xls y .xlsx. Los usuarios pueden crear, modificar y leer/escribir fácilmente en archivos de Excel. POI significa "Implementación deficiente de ofuscación".

Exportar Excel

Cómo manejar archivos de Excel usando POI (Dependencia de Maven POM)

Manejar archivos de Excel usando POI

Para leer y escribir archivos de Excel en Java, Apache proporciona una biblioteca de puntos de interés muy famosa. Esta biblioteca es lo suficientemente capaz de leer y escribir tanto XLS y XLSX formato de archivo de Excel.

Leer XLS archivos, un HSSF La implementación la proporciona la biblioteca de puntos de interés.

Leer XLSX, XSSF aplicación de POI bibliotecas será la elección. Estudiemos estas implementaciones en detalle.

Si está utilizando Maven en su proyecto, la dependencia de Maven será

Manejar archivos de Excel usando POI

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.1</version>
</dependency>

O simplemente puede descargar la última versión de archivos POI desde http://poi.apache.org/download.html y descargar el último archivo zip

Manejar archivos de Excel usando POI

Cuando descarga el archivo zip para este jar, debe descomprimirlo y agregar todos estos jar a la ruta de clase de su proyecto.

Manejar archivos de Excel usando POI

Clases e interfaces en PDI

Clases e interfaces en Apache POI
Clases e interfaces en Apache POI

Following es una lista de diferentes interfaces y clases de Java en POI para leer XLS y XLSX expediente-

  • Libro de trabajo: Las clases XSSFWorkbook y HSSFWorkbook implementan esta interfaz.
  • XSSFLibro de trabajo: Es una representación de clase del archivo XLSX.
  • HSSFLibro de trabajo: Es una representación de clase de un archivo XLS.
  • hoja: Las clases XSSFSheet y HSSFSheet implementan esta interfaz.
  • Hoja XSSF: Es una clase que representa una hoja en un archivo XLSX.
  • Hoja HSSFS: Es una clase que representa una hoja en un archivo XLS.
  • Fila: Las clases XSSFRow y HSSFRow implementan esta interfaz.
  • XSSFrow: Es una clase que representa una fila en la hoja del archivo XLSX.
  • Fila HSSFR: Es una clase que representa una fila en la hoja del archivo XLS.
  • Celular: Las clases XSSFCell y HSSFCell implementan esta interfaz.
  • XSSFCell: Es una clase que representa una celda en una fila de un archivo XLSX.
  • HSSFCell: Es una clase que representa una celda en una fila de un archivo XLS.

Operación de lectura/escritura

Para nuestro ejemplo, consideraremos el formato de archivo de Excel dado a continuación.

Operación de lectura y escritura

Leer datos del archivo Excel

Ejemplo completo: aquí estamos intentando leer datos de Excel en 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: No estamos usando el Prueba marco aquí. Ejecute la clase como aplicación Java usando la función leer Excel en Selenium como se muestra en el ejemplo anterior.

Leer datos del archivo Excel

Escribir datos en un archivo Excel

Ejemplo completo: aquí estamos intentando escribir datos desde un archivo de Excel agregando una nueva fila en el archivo de 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);

    }

}

Escribir datos en un archivo de Excel

Manipulación de Excel utilizando la API JXL

Manipulación de Excel utilizando la API JXL

JXL es también otro frasco famoso para leer archivos de Excel en Java y escribir archivos. Hoy en día, POI se utiliza en la mayoría de los proyectos, pero antes de POI, JXL era solo una API de Java para la manipulación de Excel. Es una API muy pequeña y sencilla para leer Excel en Selenium.

CONSEJOS: Mi sugerencia es no utilizar JXL en ningún proyecto nuevo porque la biblioteca no está en desarrollo activo desde 2010 y carece de la función en comparación con la API de POI.

Descargar JXL:

Si quieres trabajar con JXL, puedes descargarlo desde este enlace.

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

Manipulación de Excel utilizando la API JXL

También puede obtener un ejemplo de demostración dentro de este archivo comprimido para JXL.

Algunas de las características:

  • JXL puede leer archivos Excel en Selenium para libros de trabajo 95, 97, 2000, XP, 2003.
  • Podemos trabajar con inglés, francés, español, alemán.
  • Es posible copiar un gráfico e insertar una imagen en Excel

Retirarse:

  • Podemos escribir Excel 97 y later únicamente (no se admite la escritura en Excel 95).
  • JXL no admite el formato XLSX de archivos de Excel.
  • Genera hoja de cálculo en formato Excel 2000.

Resumen

  • El archivo Excel se puede leer mediante la operación Java IO. Para eso necesitamos usar Tarro de puntos de interés de Apache.
  • Hay dos tipos de libros en un archivo de Excel, XLSX y XLS archivos.
  • PDI tiene diferentes interfaces Libro de trabajo, Hoja, Fila, Celda.
  • Estas interfaces se implementan mediante los correspondientes XLS (HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell) y XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) clases de manipulación de archivos.
  • JXL es otra API para el manejo de Excel en Selenium.
  • JXL no puede funcionar con el formato XLSX de Excel.