Saltar al contenido

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

IO File es una parte fundamental de cualquier proceso de software. A menudo creamos un archivo, lo abrimos y actualizamos algo o lo eliminamos en nuestras computadoras. Lo mismo ocurre con la automatización de selenio. Necesitamos un proceso para manejar archivos con Selenium.

Java nos proporciona varias clases para la manipulación de archivos con Selenium. En este tutorial, aprenderemos cómo podemos leer y escribir en Sobresalir archivo con la ayuda de Java Paquete DO y apache Biblioteca de puntos de interés.

Apache POI en selenio

El es Apache POI en selenio Es una API ampliamente utilizada para pruebas de datos de selenio. Es una biblioteca de puntos de interés escrita en Java que brinda a los usuarios una API para manipular documentos de Microsoft como .xls y .xlsx. Los usuarios pueden crear, modificar y leer / escribir archivos de Excel fácilmente. POI son las siglas de “Bad Enforcement”.

Exportar Excel

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

Para leer y escribir un archivo de Excel en Java, Apache POI proporciona una biblioteca muy popular. Esta biblioteca puede leer y escribir tanto XLS y XLSX Formato de archivo de Excel.

Ser leído XLS archivos, el HSSF La implementación es proporcionada por una biblioteca de puntos de interés.

Ser leído XLSX, XSSF implementación PDI Biblioteca Habrá una elección. Estudiemos estas implementaciones en detalle.

Si está utilizando Maven en su proyecto, habrá una dependencia de Maven

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

O puede descargar la última versión de POI jars desde http://poi.apache.org/download.html y descargue el archivo zip más reciente

Una vez que descargue el archivo zip para este frasco, debe descomprimirlo y agregar todos estos frascos a la ruta de clases de su proyecto.

Clases e interfaces en POI:

Clases e interfaces en Apache POI

La siguiente es una lista de varias interfaces y clases Java en PDI para leer XLS y XLSX expediente-

Operación de lectura / escritura

Por ejemplo, consideraremos a continuación un formato de archivo de Excel dado

Leer datos del archivo de Excel

Ejemplo completo: aquí estamos tratando de 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 la Testng creat aquí. Ejecute la clase como una aplicación Java utilizando la función excelencia en Selenium como se muestra en el ejemplo anterior.

Escribir datos en un archivo de Excel

Ejemplo completo: aquí estamos tratando de escribir datos desde un archivo de Excel agregando una nueva cadena a un 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);

    }

}

Manipular Excel usando la API de JXL

JXL es también otro tarro 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 simple para una excelente lectura en Selenium.

Consejos: Mi recomendación es no usar JXL en ningún proyecto nuevo porque la biblioteca no se ha desarrollado activamente desde 2010 y carece de la función en comparación con la API de POI.

Descarga JXL:

Si quieres trabajar con JXL, puedes descargarlo desde este enlace

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

Puede encontrar un ejemplo de demostración dentro de este archivo comprimido para JXL.

Algunas de las caracteristicas:

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

Desventaja:

  • Solo podemos escribir Excel 97 y versiones posteriores (no se admite la escritura en Excel 95).
  • JXL no admite el formato XLSX de archivos de Excel.
  • Genera una hoja de cálculo en formato Excel 2000.

Resumen:

  • Un archivo de Excel se puede leer mediante la operación Java IO. Con ese fin, debemos usarlo Tarro de puntos de interés de Apache.
  • Un archivo de Excel contiene dos tipos de libros de trabajo, XLSX y XLS archivos.
  • POI, Leaflet, Row, Cell tiene varios libros de trabajo de interfaz.
  • Estas interfaces se implementan mediante correspondencia XLS (HSSFWork Workbook, HSSFSheet, HSSFRow, HSSFCell) y XLSX (Libro XSSFWork, XSSFSheet, XSSFRow, XSSFCell) clases de manipulación de archivos.
  • JXL es otra API para manejar Excel en Selenium.
  • JXL no puede funcionar con el formato de Excel XLSX.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *