Slik leser/skriver du data fra Excel-fil: Selenium POI

File IO er en kritisk del av enhver programvareprosess. Vi lager ofte en fil, åpner den og oppdaterer noe eller sletter den på datamaskinene våre. Det samme er tilfellet med Selenium Automasjon. Vi trenger en prosess å manipulere filer med Selenium.

Java gir oss forskjellige klasser for filmanipulering med Selenium. I denne opplæringen skal vi lære hvordan vi kan lese og skrive videre Excel fil ved hjelp av Java IO-pakke og Apache POI-bibliotek.

Apache POI inn Selenium

Ocuco Apache POI inn Selenium er et mye brukt API for selendatadrevet testing. Det er et POI-bibliotek skrevet i Java som gir brukerne et API for manipulering Microsoft dokumenter som .xls og .xlsx. Brukere kan enkelt opprette, endre og lese/skrive til Excel-filer. POI står for "Dårlig obfuscation Implementation."

Eksporterer Excel

Hvordan håndtere Excel-fil ved hjelp av POI (Maven POM Dependency)

Håndter Excel-fil ved hjelp av POI

For å lese og skrive Excel-fil i Java, tilbyr Apache et veldig kjent bibliotek POI. Dette biblioteket er i stand til å lese og skrive begge deler XLS og XLSX filformatet til Excel.

Å lese XLS filer, en HSSF implementering leveres av POI-biblioteket.

Å lese XLSX, XSSF Implementering av POI bibliotek vil være valget. La oss studere disse implementeringene i detalj.

Hvis du bruker Maven i prosjektet ditt, vil Maven-avhengigheten være

Håndter Excel-fil ved hjelp av POI

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.1</version>
</dependency>

Eller du kan ganske enkelt laste ned den nyeste versjonen POI-krukker fra http://poi.apache.org/download.html og last ned den nyeste zip-filen

Håndter Excel-fil ved hjelp av POI

Når du laster ned zip-filen for denne krukken, må du pakke den ut og legge alle disse krukkene til klassebanen til prosjektet ditt.

Håndter Excel-fil ved hjelp av POI

Klasser og grensesnitt i POI

Klasser og grensesnitt i Apache POI
Klasser og grensesnitt i Apache POI

Følgende er en liste over forskjellige Java Grensesnitt og klasser i POI for lesing XLS og XLSX fil-

  • Arbeidsbok: Klassene XSSFWorkbook og HSSFWorkbook implementerer dette grensesnittet.
  • XSSF-arbeidsbok: Er en klasserepresentasjon av XLSX-fil.
  • HSSF Arbeidsbok: Er en klasserepresentasjon av XLS-fil.
  • Sheet: Klassene XSSFSheet og HSSFSheet implementerer dette grensesnittet.
  • XSSFSark: Er en klasse som representerer et ark i en XLSX-fil.
  • HSSFSark: Er en klasse som representerer et ark i en XLS-fil.
  • Rad: Klassene XSSFRow og HSSFRow implementerer dette grensesnittet.
  • XSSFRow: Er en klasse som representerer en rad i arket med XLSX-fil.
  • HSSFRow: Er en klasse som representerer en rad i arket med XLS-fil.
  • Cell: Klassene XSSFCell og HSSFCell implementerer dette grensesnittet.
  • XSSFCell: Er en klasse som representerer en celle i en rad med XLSX-fil.
  • HSSFCell: Er en klasse som representerer en celle i en rad med XLS-fil.

Lese-/skriveoperasjon

For vårt eksempel vil vi vurdere nedenfor gitt Excel-filformat

Les Skriv Operasjon

Les data fra Excel-fil

Komplett eksempel: Her prøver vi å lese data fra Excel inn 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");

    }

}

Merk: Vi bruker ikke Testng rammeverket her. Kjør klassen som Java Applikasjon som bruker funksjon les excel in Selenium som vist i eksempelet ovenfor.

Les data fra Excel-fil

Skriv data på Excel-fil

Komplett eksempel: Her prøver vi å skrive data fra Excel-fil ved å legge til ny rad i Excel-fil

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

    }

}

Skriv data på Excel-fil

Excel-manipulering ved hjelp av JXL API

Excel-manipulering ved hjelp av JXL API

JXL er også en annen kjent krukke å lese Excel-fil i Java og skrive filer. I dag brukes POI i de fleste prosjektene, men før POI var JXL kun Java API for Excel-manipulering. Det er et veldig lite og enkelt API for Excel-lesing Selenium.

TIPS: Mitt forslag er å ikke bruke JXL i noe nytt prosjekt fordi biblioteket ikke er i aktiv utvikling fra 2010 og mangel på funksjonen i forhold til POI API.

Last ned JXL:

Hvis du vil jobbe med JXL, kan du laste det ned fra denne lenken

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

Excel-manipulering ved hjelp av JXL API

Du kan også få et demoeksempel i denne zippede filen for JXL.

Noen av funksjonene:

  • JXL kan lese Excel-fil i Selenium for 95, 97, 2000, XP, 2003 arbeidsbok.
  • Vi kan jobbe med engelsk, fransk, spansk, tysk.
  • Det er mulig å kopiere et diagram og bildeinnsetting i Excel

Ulempe:

  • Vi kan kun skrive Excel 97 og senere (skriving i Excel 95 støttes ikke).
  • JXL støtter ikke XLSX-formatet til excel-filen.
  • Den genererer regneark i Excel 2000-format.

Sammendrag

  • Excel-fil kan leses av Java IO-drift. For det må vi bruke Apache POI Jar.
  • Det er to typer arbeidsbok i Excel-fil, XLSX og XLS filer.
  • POI har forskjellige grensesnitt arbeidsbok, ark, rad, celle.
  • Disse grensesnittene er implementert av tilsvarende XLS (HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell) Og XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) filmanipulasjonsklasser.
  • JXL er et annet API for Excel-håndtering i Selenium.
  • JXL kan ikke fungere med XLSX-formatet i Excel.

Oppsummer dette innlegget med: