Cómo leer/escribir datos desde un archivo de 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 Automatización. 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 Selenium
La PDI de Apache en Selenium es una API ampliamente utilizada para pruebas basadas en datos de Selenium. Es una biblioteca POI escrita en Java que proporciona 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)
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á
<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
Cuando descarga el archivo zip para este jar, debe descomprimirlo y agregar todos estos jar a la ruta de clase de su proyecto.
Clases e interfaces en PDI
A continuación se muestra una lista de diferentes Java Interfaces y clases 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.
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 Java Aplicación que utiliza la función leer excel en Selenium como se muestra en el ejemplo anterior.
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); } }
Manipulación de Excel utilizando la API JXL
JXL es también otro frasco famoso para leer archivos de Excel. Java y escribir archivos. Hoy en día, POI se utiliza en la mayoría de los proyectos, pero antes de POI, JXL solo era Java API para 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/
También puede obtener un ejemplo de demostración dentro de este archivo comprimido para JXL.
Algunas de las características:
- JXL es capaz de leer archivos Excel en Selenium para libro 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:
- Sólo podemos escribir en Excel 97 y versiones posteriores (no se admite escribir en Excel 95).
- JXL no admite el formato XLSX de archivos de Excel.
- Genera hoja de cálculo en formato Excel 2000.
Resum
- El archivo Excel se puede leer mediante Java Operación IO. Para ello, necesitamos utilizar 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.