Gegevens uit Excel-bestand lezen / schrijven: Selenium POI

Inhoudsopgave:

Anonim

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 Automation. We hebben een proces nodig om bestanden met Selenium te manipuleren.

Java biedt ons verschillende klassen voor bestandsmanipulatie met Selenium. In deze tutorial gaan we leren hoe we kunnen lezen en schrijven in Excel-bestanden met behulp van het Java IO-pakket en de Apache POI-bibliotheek.

Apache POI in Selenium

De Apache POI in Selenium is een veelgebruikte API voor data-gedreven testen op basis van selenium. Het is een in Java geschreven POI-bibliotheek die gebruikers een API geeft voor het manipuleren van Microsoft-documenten zoals .xls en .xlsx. Gebruikers kunnen eenvoudig Excel-bestanden maken, wijzigen en lezen / schrijven. POI staat voor 'Poor Obfuscation Implementation'.

  • Hoe om te gaan met Excel-bestanden met behulp van POI (Maven POM Dependency)
  • Klassen en interfaces in POI
  • Lees- / schrijfbewerking
  • Lees gegevens uit Excel-bestand
  • Schrijf gegevens op Excel-bestand
  • Excel-manipulatie met behulp van JXL API

Excel exporteren

Hoe om te gaan met Excel-bestanden met behulp van POI (Maven POM Dependency)

Om Excel-bestanden in Java te lezen en te schrijven, biedt Apache een zeer beroemde bibliotheek-POI. Deze bibliotheek is capabel genoeg om zowel XLS- als XLSX- bestandsindelingen van Excel te lezen en te schrijven .

Om XLS- bestanden te lezen , wordt een HSSF- implementatie geleverd door de POI-bibliotheek.

Om XLSX te lezen , zal XSSF- implementatie van POI- bibliotheek de keuze zijn. Laten we deze implementaties in detail bestuderen.

Als u Maven in uw project gebruikt, is de Maven-afhankelijkheid

 org.apache.poi  poi  4.1.1 

Of u kunt eenvoudig de laatste versie van POI-potten downloaden van http://poi.apache.org/download.html en het nieuwste zip-bestand downloaden

Wanneer je het zip-bestand voor deze jar downloadt, moet je het uitpakken en al deze potten toevoegen aan het klassenpad van je project.

Klassen en interfaces in POI:

Klassen en interfaces in Apache POI

Hieronder volgt een lijst met verschillende Java-interfaces en klassen in POI voor het lezen van XLS- en XLSX- bestanden.

  • Werkboek : XSSFWorkbook- en HSSFWorkbook-klassen implementeren deze interface.
  • XSSFWorkbook : is een klassevoorstelling van een XLSX-bestand.
  • HSSFWorkbook : is een klassevoorstelling van een XLS-bestand.
  • Sheet : XSSFSheet- en HSSFSheet-klassen implementeren deze interface.
  • XSSFSheet : is een klasse die een blad in een XLSX-bestand vertegenwoordigt.
  • HSSFSheet : 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.
  • XSSFCell : is een klasse die een cel in een rij van een XLSX-bestand vertegenwoordigt.
  • HSSFCell: is een klasse die een cel in een rij van een XLS-bestand vertegenwoordigt.

Lees- / schrijfbewerking

Voor ons voorbeeld zullen we het onderstaande Excel-bestandsformaat bekijken

Lees gegevens uit Excel-bestand

Volledig voorbeeld: hier proberen we gegevens uit Excel in Selenium te lezen:

pakket excelExportAndFileIO;importeer java.io.File;importeer java.io.FileInputStream;importeer java.io.IOException;importeer org.apache.poi.hssf.usermodel.HSSFWorkbook;importeer org.apache.poi.ss.usermodel.Row;importeer org.apache.poi.ss.usermodel.Sheet;importeer org.apache.poi.ss.usermodel.Workbook;importeer org.apache.poi.xssf.usermodel.XSSFWorkbook;openbare klasse ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) gooit IOException {// Maak een object van de File-klasse om het xlsx-bestand te openenBestandsbestand = nieuw bestand (bestandspad + "\\" + bestandsnaam);// Maak een object van de FileInputStream-klasse om het Excel-bestand te lezenFileInputStream inputStream = nieuwe FileInputStream (bestand);Werkboek guru99Workbook = null;// Zoek de bestandsextensie door de bestandsnaam in substring te splitsen en alleen de extensienaam op te halenString fileExtensionName = bestandsnaam.substring (bestandsnaam.indexOf ("."));// Controleer de staat als het bestand een xlsx-bestand isif (fileExtensionName.equals (". xlsx")) {// Als het een xlsx-bestand is, maak dan een object van de XSSFWorkbook-klasseguru99Workbook = nieuw XSSFWorkbook (inputStream);​// Controleer de staat als het bestand een xls-bestand iselse if (fileExtensionName.equals (". xls")) {// Als het een xls-bestand is, maak dan een object van de HSSFWorkbook-klasseguru99Workbook = nieuw HSSFWorkbook (inputStream);​// Lees het blad in de werkmap op naamSheet guru99Sheet = guru99Workbook.getSheet (sheetName);// Zoek het aantal rijen in Excel-bestandint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Maak een lus over alle rijen met Excel-bestanden om het te lezenvoor (int i = 0; i 

Opmerking: we gebruiken het Testng-framework hier niet. Voer de klasse uit als Java-applicatie met behulp van de functie Read Excel in Selenium, zoals weergegeven in het bovenstaande voorbeeld.

Schrijf gegevens op Excel-bestand

Volledig voorbeeld: hier proberen we gegevens uit Excel-bestand te schrijven door een nieuwe rij in Excel-bestand toe te voegen

pakket excelExportAndFileIO;importeer java.io.File;importeer java.io.FileInputStream;importeer java.io.FileOutputStream;importeer java.io.IOException;importeer org.apache.poi.hssf.usermodel.HSSFWorkbook;importeer org.apache.poi.ss.usermodel.Cell;importeer org.apache.poi.ss.usermodel.Row;importeer org.apache.poi.ss.usermodel.Sheet;importeer org.apache.poi.ss.usermodel.Workbook;importeer org.apache.poi.xssf.usermodel.XSSFWorkbook;openbare klasse WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) gooit IOException {// Maak een object van de File-klasse om het xlsx-bestand te openenBestandsbestand = nieuw bestand (bestandspad + "\\" + bestandsnaam);// Maak een object van de FileInputStream-klasse om het Excel-bestand te lezenFileInputStream inputStream = nieuwe FileInputStream (bestand);Werkboek guru99Workbook = null;// Zoek de bestandsextensie door de bestandsnaam in substring te splitsen en alleen de extensienaam op te halenString fileExtensionName = bestandsnaam.substring (bestandsnaam.indexOf ("."));// Controleer de staat als het bestand een xlsx-bestand isif (fileExtensionName.equals (". xlsx")) {// Als het een xlsx-bestand is, maak dan een object van de XSSFWorkbook-klasseguru99Workbook = nieuw XSSFWorkbook (inputStream);​// Controleer de staat als het bestand een xls-bestand iselse if (fileExtensionName.equals (". xls")) {// Als het een xls-bestand is, maak dan een object van de XSSFWorkbook-klasseguru99Workbook = nieuw HSSFWorkbook (inputStream);​// Lees Excel-blad op bladnaamSheet sheet = guru99Workbook.getSheet (sheetName);// Verkrijg het huidige aantal rijen in Excel-bestandint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Haal de eerste rij uit het bladRij rij = sheet.getRow (0);// Maak een nieuwe rij en voeg deze toe aan het laatste bladRij newRow = sheet.createRow (rowCount + 1);// Maak een lus over de cel van de nieuw gemaakte rijvoor (int j = 0; j 

Excel-manipulatie met behulp van JXL API

JXL is ook een andere beroemde pot om Excel-bestanden in Java te lezen en bestanden te schrijven. Tegenwoordig wordt POI in de meeste projecten gebruikt, maar vóór POI was JXL alleen Java API voor Excel-manipulatie. Het is een zeer kleine en eenvoudige API voor Excel-lezen in Selenium.

TIPS: Mijn suggestie is om JXL niet in een nieuw project te gebruiken, omdat de bibliotheek sinds 2010 niet actief in ontwikkeling is en de functie ontbreekt in vergelijking met POI API.

JXL downloaden:

Als u met JXL wilt werken, kunt u deze downloaden via deze link

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

U kunt ook een demo-voorbeeld krijgen in dit gecomprimeerde bestand voor JXL.

Enkele kenmerken:

  • JXL kan Excel-bestanden lezen in Selenium voor werkmap 95, 97, 2000, XP, 2003.
  • We kunnen werken met Engels, Frans, Spaans, Duits.
  • Het kopiëren van een grafiek en het invoegen van afbeeldingen in Excel is mogelijk

Nadeel:

  • We kunnen alleen Excel 97 en later schrijven (schrijven in Excel 95 wordt niet ondersteund).
  • JXL ondersteunt geen XLSX-indeling van Excel-bestanden.
  • Het genereert een spreadsheet in Excel 2000-indeling.

Overzicht:

  • Excel-bestand kan worden gelezen door Java IO-bewerking. Daarvoor hebben we Apache POI Jar nodig .
  • 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 overeenkomstige XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) en XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ) bestandsmanipulatieklassen.
  • JXL is een andere API voor Excel-verwerking in Selenium.
  • JXL kan niet werken met het XLSX-formaat van Excel.