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

Tabla de contenido:

Anonim

File IO es una parte fundamental de cualquier proceso de software. Con frecuencia creamos un archivo, lo abrimos y actualizamos algo o lo eliminamos en nuestras computadoras. Igual es el caso de 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, aprenderemos cómo podemos leer y escribir en un archivo de Excel con la ayuda del paquete Java IO y la biblioteca Apache POI.

Apache POI en selenio

El POI Apache en selenio es un API ampliamente utilizado para los datos de selenio accionados prueba. 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 fácilmente en archivos de Excel. POI significa "Implementación deficiente de ofuscación".

  • Cómo manejar un archivo de Excel usando POI (Dependencia de Maven POM)
  • Clases e interfaces en POI
  • Operación de lectura / escritura
  • Leer datos de un archivo de Excel
  • Escribir datos en un archivo de Excel
  • Manipulación de Excel usando la API de JXL

Exportando Excel

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

Para leer y escribir archivos de Excel en Java, Apache proporciona un PDI de biblioteca muy famoso. Esta biblioteca es lo suficientemente capaz de leer y escribir en formato de archivo XLS y XLSX de Excel.

Para leer archivos XLS , la biblioteca de puntos de interés proporciona una implementación HSSF .

Para leer XLSX, la implementación XSSF de la biblioteca de puntos de interés será la opción. Estudiemos estas implementaciones en detalle.

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

 org.apache.poi  poi  4.1.1 

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

Cuando 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

A continuación se muestra una lista de diferentes interfaces y clases Java en POI para leer archivos XLS y XLSX:

  • Libro de trabajo : las clases XSSFWorkbook y HSSFWorkbook implementan esta interfaz.
  • XSSFWorkbook : es una representación de clase del archivo XLSX.
  • HSSFWorkbook : es una representación de clase del archivo XLS.
  • Hoja : las clases XSSFSheet y HSSFSheet implementan esta interfaz.
  • XSSFSheet : es una clase que representa una hoja en un archivo XLSX.
  • HSSFSheet : 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.
  • HSSFRow : es una clase que representa una fila en la hoja del archivo XLS.
  • Celda : 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 a continuación el formato de archivo de Excel dado

Leer datos de un archivo de Excel

Ejemplo completo: aquí estamos tratando de leer datos de Excel en Selenium:

paquete excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.IOException;importar org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;importar org.apache.poi.ss.usermodel.Workbook;importar org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) lanza IOException {// Crea un objeto de la clase File para abrir el archivo xlsxArchivo archivo = nuevo archivo (ruta de archivo + "\\" + nombre de archivo);// Crea un objeto de la clase FileInputStream para leer el archivo de ExcelFileInputStream inputStream = nuevo FileInputStream (archivo);Libro de trabajo guru99Workbook = null;// Busque la extensión del archivo dividiendo el nombre del archivo en la subcadena y obteniendo solo el nombre de la extensiónString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Verifique la condición si el archivo es un archivo xlsxif (fileExtensionName.equals (". xlsx")) {// Si es un archivo xlsx, cree un objeto de la clase XSSFWorkbookguru99Workbook = nuevo XSSFWorkbook (inputStream);}// Verifique la condición si el archivo es un archivo xlselse if (fileExtensionName.equals (". xls")) {// Si es un archivo xls, crea un objeto de la clase HSSFWorkbookguru99Workbook = nuevo HSSFWorkbook (inputStream);}// Leer la hoja dentro del libro de trabajo por su nombreHoja guru99Sheet = guru99Workbook.getSheet (sheetName);// Encuentra el número de filas en el archivo de Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Crea un bucle sobre todas las filas del archivo de Excel para leerlopara (int i = 0; i 

Nota: No usamos el marco Testng aquí. Ejecute la clase como aplicación Java usando la función read excel 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 fila en el archivo de Excel

paquete excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;importar 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;importar org.apache.poi.ss.usermodel.Workbook;importar org.apache.poi.xssf.usermodel.XSSFWorkbook;public class WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) lanza IOException {// Crea un objeto de la clase File para abrir el archivo xlsxArchivo archivo = nuevo archivo (ruta de archivo + "\\" + nombre de archivo);// Crea un objeto de la clase FileInputStream para leer el archivo de ExcelFileInputStream inputStream = nuevo FileInputStream (archivo);Libro de trabajo guru99Workbook = null;// Busque la extensión del archivo dividiendo el nombre del archivo en la subcadena y obteniendo solo el nombre de la extensiónString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Verifique la condición si el archivo es un archivo xlsxif (fileExtensionName.equals (". xlsx")) {// Si es un archivo xlsx, cree un objeto de la clase XSSFWorkbookguru99Workbook = nuevo XSSFWorkbook (inputStream);}// Verifique la condición si el archivo es un archivo xlselse if (fileExtensionName.equals (". xls")) {// Si es un archivo xls, crea un objeto de la clase XSSFWorkbookguru99Workbook = nuevo HSSFWorkbook (inputStream);}// Leer hoja de Excel por nombre de hojaHoja hoja = guru99Workbook.getSheet (sheetName);// Obtener el recuento actual de filas en el archivo de Excelint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Obtener la primera fila de la hojaFila fila = hoja.getRow (0);// Crea una nueva fila y añádela al final de la hojaFila newRow = sheet.createRow (rowCount + 1);// Crea un bucle sobre la celda de la Fila recién creadafor (int j = 0; j 

Manipulación de 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 usa en la mayoría de los proyectos, pero antes de POI, JXL era solo API de Java para la manipulación de Excel. Es una API muy pequeña y simple para excelente lectura en Selenium.

CONSEJOS: Mi sugerencia es no usar 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.

Descarga JXL:

Si quieres trabajar con JXL, puedes descargarlo desde este enlace

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

También puede obtener 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 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 y la inserción de imágenes en Excel

Retirarse:

  • 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 hoja de cálculo en formato Excel 2000.

Resumen:

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