Gegevens uit een Excel-bestand lezen/schrijven: Selenium THEN
Bestands-IO is een cruciaal onderdeel van elk softwareproces. We maken regelmatig een bestand, openen het en werken iets bij of verwijderen het op onze computers. Hetzelfde is het geval met Selenium Automatisering. We hebben een proces nodig om bestanden mee te manipuleren Selenium.
Java biedt ons verschillende klassen voor bestandsmanipulatie Selenium. In deze tutorial gaan we leren hoe we kunnen lezen en schrijven Excel bestand met de hulp van Java IO-pakket en apache POI-bibliotheek.
Apache POI binnen Selenium
Het Apache POI binnen Selenium is een veelgebruikte API voor selenium data-gedreven testen. Het is een POI-bibliotheek geschreven in Java dat gebruikers een API geeft om te manipuleren Microsoft documenten zoals .xls en .xlsx. Gebruikers kunnen eenvoudig Excel-bestanden maken, wijzigen en lezen/schrijven. POI staat voor ‘Poor Obfuscation Implementation’.
Excel exporteren
Excel-bestand verwerken met behulp van POI (Maven POM Dependency)
Excel-bestand lezen en schrijven Java, Apache biedt een zeer bekende bibliotheek-POI. Deze bibliotheek is capabel genoeg om beide te lezen en te schrijven XLS en XLSX bestandsformaat van Excel.
Lezen XLS bestanden, een HSSF implementatie wordt verzorgd door de POI-bibliotheek.
Lezen XLSX, XSSF invoer van THEN bibliotheek zal de keuze zijn. Laten we deze implementaties in detail bestuderen.
Als u Maven in uw project gebruikt, is de Maven-afhankelijkheid
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
Of u kunt eenvoudig de nieuwste versie van POI-potten downloaden http://poi.apache.org/download.html & download het nieuwste zipbestand
Wanneer u het zipbestand voor deze jar downloadt, moet u deze uitpakken en deze allemaal toevoegen aan het klassenpad van uw project.
Klassen en interfaces in POI
Hieronder volgt een lijst met verschillende Java Interfaces en klassen in THEN voor lezen XLS en XLSX filet-
- werkboek: XSSFWorkbook- en HSSFWorkbook-klassen implementeren deze interface.
- XSSFWerkboek: Is een klassenweergave van een XLSX-bestand.
- HSSFWerkboek: Is een klassenweergave van een XLS-bestand.
- vel: XSSFSheet- en HSSFSheet-klassen implementeren deze interface.
- XSSFBlad: Is een klasse die een blad in een XLSX-bestand vertegenwoordigt.
- HSSFBlad: Is een klasse die een blad in een XLS-bestand vertegenwoordigt.
- Rij: XSSFRow- en HSSFRow-klassen implementeren deze interface.
- XSSFRow: Is een klasse die een rij in het blad van het XLSX-bestand vertegenwoordigt.
- HSSFRow: Is een klasse die een rij in het blad van het XLS-bestand vertegenwoordigt.
- Cel: XSSFcell- en HSSFcell-klassen implementeren deze interface.
- XSSFcel: Is een klasse die een cel in een rij XLSX-bestanden vertegenwoordigt.
- HSSFCel: Is een klasse die een cel in een rij XLS-bestanden vertegenwoordigt.
Lees-/schrijfbewerking
Voor ons voorbeeld beschouwen we het onderstaande Excel-bestandsformaat
Gegevens uit Excel-bestand lezen
Compleet voorbeeld: Hier proberen we gegevens uit Excel in te lezen 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"); } }
Let op: wij maken geen gebruik van de Testen kader hier. Voer de klasse uit als Java Applicatie met behulp van de functie lezen excel in Selenium zoals weergegeven in het bovenstaande voorbeeld.
Schrijf gegevens in een Excel-bestand
Volledig voorbeeld: hier proberen we gegevens uit het Excel-bestand te schrijven door een nieuwe rij in het Excel-bestand toe te voegen
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); } }
Excel-manipulatie met behulp van JXL API
JXL is ook een andere beroemde pot om Excel-bestanden in te lezen Java en het schrijven van bestanden. Tegenwoordig wordt POI in de meeste projecten gebruikt, maar vóór POI was dat alleen JXL Java API voor Excel-manipulatie. Het is een zeer kleine en eenvoudige API voor het inlezen van Excel Selenium.
TIPS: Mijn suggestie is om JXL in geen enkel nieuw project te gebruiken, omdat de bibliotheek vanaf 2010 niet meer actief wordt ontwikkeld en deze functie ontbreekt in vergelijking met de POI API.
JXL downloaden:
Als je met JXL wilt werken, kun je het downloaden via deze link
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
U kunt ook een demovoorbeeld krijgen in dit gecomprimeerde bestand voor JXL.
Enkele kenmerken:
- JXL kan Excel-bestanden inlezen Selenium voor 95, 97, 2000, XP, 2003 werkmap.
- We kunnen werken met Engels, Frans, Spaans en Duits.
- Het kopiëren van een grafiek en het invoegen van afbeeldingen in Excel is mogelijk
Nadeel:
- We kunnen alleen schrijven in Excel 97 en later (schrijven in Excel 95 wordt niet ondersteund).
- JXL ondersteunt het XLSX-formaat van Excel-bestanden niet.
- Het genereert een spreadsheet in Excel 2000-formaat.
Samenvatting
- Excel-bestand kan worden gelezen door Java IO-bewerking. Hiervoor moeten we gebruiken Apache POI-pot.
- Er zijn twee soorten werkmappen in Excel-bestanden: XLSX en XLS bestanden.
- POI heeft verschillende interfaces Werkmap, Blad, Rij, Cel.
- Deze interfaces worden geïmplementeerd door middel van corresponderende XLS (HSSFWerkboek, HSSFSheet, HSSFRow, HSSFCell) en XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) klassen voor bestandsmanipulatie.
- JXL is een andere API voor Excel-verwerking Selenium.
- JXL kan niet werken met het XLSX-formaat van Excel.