Hoe lees/schrijf ik gegevens in Excel? Selenium Apache POI gebruiken
โก Slimme samenvatting
Excel-bestanden op de schijf Selenium datagestuurde tests, en Apache POI is de Java Een bibliotheek die ze leest en schrijft. De onderstaande secties behandelen de afhankelijkheid, de kernklassen, lees- en schrijfvoorbeelden en JXL.
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
De Apache POI binnen Selenium is een veelgebruikte API voor Selenium datagedreven testenHet 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, bewerken en lezen/schrijven. POI staat voor "Poor Obfuscation Implementation" (slechte implementatie van versleuteling).
Hoe Excel-bestanden te verwerken met POI (Maven POM-afhankelijkheid)
POI-links Selenium Test de resultaten in het onderstaande werkboek.
Excel-bestand lezen en schrijven JavaApache biedt de zeer bekende bibliotheek POI aan. Deze bibliotheek is in staat om zowel XLS- als XLSX-bestanden van Excel te lezen en te schrijven.
Om XLS-bestanden te lezen, biedt de POI-bibliotheek een HSSF-implementatie.
Om XLSX-bestanden te lezen, is de XSSF-implementatie van de POI-bibliotheek de beste keuze. Laten we deze implementaties eens nader bekijken.
Als je Maven in je project gebruikt, wordt de Maven-afhankelijkheid aan pom.xml toegevoegd zoals hieronder weergegeven.
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
Versie-opmerking: 4.1.1 is het oorspronkelijke voorbeeld; huidige projecten verklaren poi-ooxml 5.5.1, wat vereist is voor XLSX.
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 Hieronder ziet u de interfaces en klassen in POI voor het lezen van XLS- en XLSX-bestanden.
- Werkboek: De klassen XSSFWorkbook en HSSFWorkbook implementeren deze interface.
- XSSF-werkboek: Dit is een klasse-representatie van een XLSX-bestand.
- HSSF-werkboek: Dit is een klasse-representatie van een XLS-bestand.
- Vel: De klassen XSSFSheet en HSSFSheet implementeren deze interface.
- XSSFSheet: Een klasse die een werkblad in een XLSX-bestand vertegenwoordigt.
- HSSFSheet: Een klasse die een werkblad in een XLS-bestand vertegenwoordigt.
- Rij: De klassen XSSFRow en HSSFRow implementeren deze interface.
- XSSFRow: Is een klasse een rij in het werkblad van een XLSX-bestand?
- HSSFRow: Is een klasse een rij in het werkblad van het XLS-bestand?
- Cel: De klassen XSSFCell en HSSFCell implementeren deze interface.
- XSSFCell: Is een klasse die een cel in een rij van een XLSX-bestand vertegenwoordigt?
- HSSFCel: Is een klasse die een cel in een rij XLS-bestanden vertegenwoordigt.
Lezen schrijven Operatie
Voor ons voorbeeld beschouwen we het onderstaande Excel-bestandsformaat
Gegevens uit Excel-bestand lezen
Volledig voorbeeld: Hier proberen we gegevens uit Excel 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: We maken geen gebruik van de TestNG kader hier. Voer de klasse uit als Java Applicatie met behulp van de functie lezen excel in Selenium zoals weergegeven in het bovenstaande voorbeeld.
De console print vervolgens elke rij, cel voor cel.
Schrijf gegevens naar een Excel-bestand.
Volledig voorbeeld: Hier proberen we gegevens uit een Excel-bestand te schrijven door een nieuwe rij aan 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); } }
Het werkblad bevat vervolgens de toegevoegde rij.
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 advies is om JXL niet te gebruiken in nieuwe projecten, omdat de bibliotheek sinds 2010 niet meer actief wordt ontwikkeld (versie 2.6.12 is nog steeds de meest recente release) en omdat er in vergelijking met de POI API een aantal functies ontbreken.
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/
In dit gezipte bestand vindt u ook een demo-voorbeeld voor JXL, zoals bijvoorbeeld het voorbeeld.tracDe onderstaande inhoud van Ted wordt weergegeven.
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.










