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)

Behandel Excel-bestanden met behulp van POI

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

Behandel Excel-bestanden met behulp van POI

<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

Behandel Excel-bestanden met behulp van POI

Wanneer u het zipbestand voor deze jar downloadt, moet u deze uitpakken en deze allemaal toevoegen aan het klassenpad van uw project.

Behandel Excel-bestanden met behulp van POI

Klassen en interfaces in POI

Klassen en interfaces in Apache POI
Klassen en interfaces in Apache 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

Lees Schrijf Operatie

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.

Gegevens uit Excel-bestand lezen

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);

    }

}

Schrijf gegevens in een Excel-bestand

Excel-manipulatie met behulp van JXL API

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/

Excel-manipulatie met behulp van JXL API

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.