So lesen/schreiben Sie Daten aus einer Excel-Datei: Selenium POI

File IO ist ein wichtiger Teil jedes Softwareprozesses. Wir erstellen hรคufig eine Datei, รถffnen sie und aktualisieren etwas oder lรถschen sie auf unseren Computern. Gleiches gilt fรผr Selenium Automatisierung. Wir brauchen einen Prozess, mit dem wir Dateien manipulieren kรถnnen Selenium.

Java stellt uns verschiedene Klassen zur Dateimanipulation zur Verfรผgung mit Selenium. In diesem Tutorial lernen wir, wie wir lesen und schreiben kรถnnen Excel Datei mit Hilfe von Java IO-Paket und Apache POI-Bibliothek.

Apache POI in Selenium

Das Apache POI in Selenium ist eine weit verbreitete API fรผr Selenium-datengesteuertes Testen. Es ist eine POI-Bibliothek, die in Java das den Benutzern eine API zur Manipulation bietet Microsoft Dokumente wie .xls und .xlsx. Benutzer kรถnnen problemlos Excel-Dateien erstellen, รคndern und lesen/schreiben. POI steht fรผr โ€žPoor Obfuscation Implementationโ€œ.

Excel exportieren

Umgang mit Excel-Dateien mithilfe von POI (Maven POM Dependency)

Behandeln Sie Excel-Dateien mithilfe von POI

So lesen und schreiben Sie Excel-Dateien in Java, Apache bietet eine sehr bekannte Bibliothek POI. Diese Bibliothek ist leistungsfรคhig genug, um sowohl zu lesen als auch zu schreiben XLS und XLSX Dateiformat von Excel.

Lesen XLS Dateien, ein HSSF Die Implementierung wird von der POI-Bibliothek bereitgestellt.

Lesen XLSX, XSSF Implementierung von POI wird die Wahl sein. Lassen Sie uns diese Implementierungen im Detail untersuchen.

Wenn Sie Maven in Ihrem Projekt verwenden, ist die Maven-Abhรคngigkeit vorhanden

Behandeln Sie Excel-Dateien mithilfe von POI

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

Oder Sie laden einfach die neueste Version der POI-Jars herunter http://poi.apache.org/download.html & laden Sie die neueste ZIP-Datei herunter

Behandeln Sie Excel-Dateien mithilfe von POI

Wenn Sie die ZIP-Datei fรผr dieses JAR herunterladen, mรผssen Sie es entpacken und alle JAR-Dateien zum Klassenpfad Ihres Projekts hinzufรผgen.

Behandeln Sie Excel-Dateien mithilfe von POI

Klassen und Schnittstellen in POI

Klassen und Schnittstellen in Apache POI
Klassen und Schnittstellen in Apache POI

Nachfolgend finden Sie eine Liste verschiedener Java Schnittstellen und Klassen in POI zum Lesen XLS und XLSX Filet-

  • Workbook: Die Klassen XSSFWorkbook und HSSFWorkbook implementieren diese Schnittstelle.
  • XSSFWorkbook: Ist eine Klassendarstellung einer XLSX-Datei.
  • HSSFArbeitsmappe: Ist eine Klassendarstellung einer XLS-Datei.
  • Blatt: Die Klassen XSSFSheet und HSSFSheet implementieren diese Schnittstelle.
  • XSSFSheet: Ist eine Klasse, die ein Blatt in einer XLSX-Datei darstellt.
  • HSSFSheet: Ist eine Klasse, die ein Blatt in einer XLS-Datei darstellt.
  • Reihe: Die Klassen XSSFRow und HSSFRow implementieren diese Schnittstelle.
  • XSSFRow: Ist eine Klasse, die eine Zeile im Blatt der XLSX-Datei darstellt.
  • HSSFRow: Ist eine Klasse, die eine Zeile im Blatt der XLS-Datei darstellt.
  • Zelle: Die Klassen XSSFCell und HSSFCell implementieren diese Schnittstelle.
  • XSSFCell: Ist eine Klasse, die eine Zelle in einer Zeile einer XLSX-Datei darstellt.
  • HSSFCelle: Ist eine Klasse, die eine Zelle in einer Zeile einer XLS-Datei darstellt.

Lese-/Schreibvorgang

Fรผr unser Beispiel betrachten wir das unten angegebene Excel-Dateiformat

Lesen schreiben OperaProduktion

Daten aus Excel-Datei lesen

Vollstรคndiges Beispiel: Hier versuchen wir, Daten aus Excel einzulesen 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");

    }

}

Hinweis: Wir verwenden das nicht Testng Framework hier. Fรผhren Sie die Klasse aus als Java Anwendung mit der Funktion โ€žExcel lesenโ€œ in Selenium wie im obigen Beispiel gezeigt.

Lesen Sie Daten aus einer Excel-Datei

Schreiben Sie Daten in eine Excel-Datei

Vollstรคndiges Beispiel: Hier versuchen wir, Daten aus einer Excel-Datei zu schreiben, indem wir eine neue Zeile in die Excel-Datei einfรผgen

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

    }

}

Daten in eine Excel-Datei schreiben

Excel-Manipulation mithilfe der JXL-API

Excel-Manipulation mithilfe der JXL-API

JXL ist auch ein weiteres bekanntes JAR zum Lesen von Excel-Dateien Java und das Schreiben von Dateien. Heutzutage wird POI in den meisten Projekten verwendet, aber vor POI war JXL nur Java API fรผr Excel-Manipulation. Es ist eine sehr kleine und einfache API zum Lesen von Excel in Selenium.

TIPPS: Mein Vorschlag ist, JXL nicht in neuen Projekten zu verwenden, da sich die Bibliothek seit 2010 nicht mehr in der aktiven Entwicklung befindet und diese Funktion im Vergleich zur POI-API fehlt.

JXL herunterladen:

Wenn Sie mit JXL arbeiten mรถchten, kรถnnen Sie es รผber diesen Link herunterladen

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

Excel-Manipulation mithilfe der JXL-API

Sie kรถnnen in dieser ZIP-Datei auch ein Demo-Beispiel fรผr JXL abrufen.

Einige der Funktionen:

  • JXL kann Excel-Dateien einlesen Selenium fรผr 95, 97, 2000, XP, 2003 Arbeitsmappe.
  • Wir kรถnnen mit Englisch, Franzรถsisch, Spanisch und Deutsch arbeiten.
  • Das Kopieren eines Diagramms und das Einfรผgen von Bildern in Excel ist mรถglich

Nachteil:

  • Wir kรถnnen nur in Excel 97 und hรถher schreiben (das Schreiben in Excel 95 wird nicht unterstรผtzt).
  • JXL unterstรผtzt das XLSX-Format von Excel-Dateien nicht.
  • Es generiert eine Tabelle im Excel 2000-Format.

Zusammenfassung

  • Excel-Datei kann gelesen werden von Java IO-Operation. Dafรผr mรผssen wir verwenden Apache POI Jar.
  • Es gibt zwei Arten von Arbeitsmappen in Excel-Dateien: XLSX und XLS Dateien.
  • POI verfรผgt รผber verschiedene Schnittstellen: Arbeitsmappe, Blatt, Zeile, Zelle.
  • Diese Schnittstellen werden entsprechend implementiert XLS (HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell) und XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) Dateimanipulationsklassen.
  • JXL ist eine weitere API fรผr die Excel-Verarbeitung Selenium.
  • JXL kann nicht mit dem XLSX-Format von Excel arbeiten.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: