Datei-E / A ist ein wichtiger Bestandteil 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 Automation. Wir brauchen einen Prozess, um Dateien mit Selen zu bearbeiten.
Java bietet uns verschiedene Klassen für die Dateimanipulation mit Selen. In diesem Tutorial lernen wir, wie wir mithilfe des Java IO-Pakets und der Apache POI-Bibliothek in Excel-Dateien lesen und schreiben können.
Apache POI in Selen
Der Apache-POI in Selen ist eine weit verbreitete API für datengesteuerte Selentests. Es handelt sich um eine in Java geschriebene POI-Bibliothek, die Benutzern eine API zum Bearbeiten von Microsoft-Dokumenten wie XLS und XLSX bietet. Benutzer können problemlos Excel-Dateien erstellen, ändern und in Excel-Dateien lesen / schreiben. POI steht für "Poor Obfuscation Implementation".
- Umgang mit Excel-Dateien mit POI (Maven POM Dependency)
- Klassen und Schnittstellen im POI
- Lese- / Schreibvorgang
- Lesen Sie Daten aus einer Excel-Datei
- Schreiben Sie Daten in eine Excel-Datei
- Excel-Manipulation mit der JXL-API
Excel exportieren
Umgang mit Excel-Dateien mit POI (Maven POM Dependency)
Zum Lesen und Schreiben von Excel-Dateien in Java bietet Apache einen sehr bekannten POI für Bibliotheken. Diese Bibliothek kann sowohl das XLS- als auch das XLSX- Dateiformat von Excel lesen und schreiben .
Zum Lesen von XLS- Dateien wird eine HSSF- Implementierung von der POI-Bibliothek bereitgestellt.
Zum Lesen von XLSX ist die XSSF- Implementierung der POI- Bibliothek die Wahl. Lassen Sie uns diese Implementierungen im Detail untersuchen.
Wenn Sie Maven in Ihrem Projekt verwenden, ist die Maven-Abhängigkeit
org.apache.poi groupId> poi 4.1.1 Version> Abhängigkeit>
Oder Sie können einfach die POI-Gläser der neuesten Version von http://poi.apache.org/download.html herunterladen und die neueste Zip-Datei herunterladen
Wenn Sie die Zip-Datei für dieses JAR herunterladen, müssen Sie sie entpacken und alle diese Jars zum Klassenpfad Ihres Projekts hinzufügen.
Klassen und Schnittstellen im POI:

Es folgt eine Liste der verschiedenen Java - Schnittstellen und Klassen in POI zum Lesen XLS und XLSX File-
- Arbeitsmappe : XSSFWorkbook- und HSSFWorkbook-Klassen implementieren diese Schnittstelle.
- XSSFWorkbook : Ist eine Klassendarstellung der XLSX-Datei.
- HSSFWorkbook : Ist eine Klassendarstellung der XLS-Datei.
- Sheet : XSSFSheet- und HSSFSheet-Klassen 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.
- Zeile : XSSFRow- und HSSFRow-Klassen 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 : XSSFCell- und HSSFCell-Klassen implementieren diese Schnittstelle.
- XSSFCell : Ist eine Klasse, die eine Zelle in einer Reihe von XLSX-Dateien darstellt.
- HSSFCell: Ist eine Klasse, die eine Zelle in einer Reihe von XLS-Dateien darstellt.
Lese- / Schreibvorgang-
In unserem Beispiel betrachten wir das unten angegebene Excel-Dateiformat
Lesen Sie Daten aus einer Excel-Datei
Vollständiges Beispiel: Hier versuchen wir, Daten aus Excel in Selen zu lesen:
Paket 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;öffentliche Klasse ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) löst IOException {aus// Erstelle ein Objekt der File-Klasse, um die XLSX-Datei zu öffnenDatei file = neue Datei (filePath + "\\" + fileName);// Erstellen Sie ein Objekt der FileInputStream-Klasse, um die Excel-Datei zu lesenFileInputStream inputStream = neuer FileInputStream (Datei);Arbeitsmappe guru99Workbook = null;// Suchen Sie die Dateierweiterung, indem Sie den Dateinamen in den Teilstring aufteilen und nur den Erweiterungsnamen abrufenString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Überprüfen Sie die Bedingung, ob es sich bei der Datei um eine xlsx-Datei handeltif (fileExtensionName.equals (". xlsx")) {// Wenn es sich um eine xlsx-Datei handelt, erstellen Sie ein Objekt der XSSFWorkbook-Klasseguru99Workbook = neues XSSFWorkbook (inputStream);}}// Überprüfen Sie die Bedingung, ob die Datei eine XLS-Datei istsonst wenn (fileExtensionName.equals (". xls")) {// Wenn es sich um eine XLS-Datei handelt, erstellen Sie ein Objekt der HSSFWorkbook-Klasseguru99Workbook = neues HSSFWorkbook (inputStream);}}// Blatt in der Arbeitsmappe anhand seines Namens lesenSheet guru99Sheet = guru99Workbook.getSheet (sheetName);// Anzahl der Zeilen in der Excel-Datei ermittelnint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Erstelle eine Schleife über alle Zeilen der Excel-Datei, um sie zu lesenfür (int i = 0; iHinweis: Wir verwenden hier nicht das Testng-Framework. Führen Sie die Klasse als Java-Anwendung mit der Funktion read excel in Selen aus, wie im obigen Beispiel gezeigt.
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
Paket 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;öffentliche Klasse WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) löst IOException {aus// Erstelle ein Objekt der File-Klasse, um die XLSX-Datei zu öffnenDatei file = neue Datei (filePath + "\\" + fileName);// Erstellen Sie ein Objekt der FileInputStream-Klasse, um die Excel-Datei zu lesenFileInputStream inputStream = neuer FileInputStream (Datei);Arbeitsmappe guru99Workbook = null;// Suchen Sie die Dateierweiterung, indem Sie den Dateinamen in den Teilstring aufteilen und nur den Erweiterungsnamen abrufenString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Überprüfen Sie die Bedingung, ob es sich bei der Datei um eine xlsx-Datei handeltif (fileExtensionName.equals (". xlsx")) {// Wenn es sich um eine xlsx-Datei handelt, erstellen Sie ein Objekt der XSSFWorkbook-Klasseguru99Workbook = neues XSSFWorkbook (inputStream);}}// Überprüfen Sie die Bedingung, ob die Datei eine XLS-Datei istsonst wenn (fileExtensionName.equals (". xls")) {// Wenn es sich um eine XLS-Datei handelt, erstellen Sie ein Objekt der XSSFWorkbook-Klasseguru99Workbook = neues HSSFWorkbook (inputStream);}}// Excel Blatt für Blatt Name lesenSheet sheet = guru99Workbook.getSheet (sheetName);// Aktuelle Anzahl der Zeilen in der Excel-Datei abrufenint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Holen Sie sich die erste Zeile aus dem BlattZeile row = sheet.getRow (0);// Erstelle eine neue Zeile und füge sie am Ende des Blattes hinzuZeile newRow = sheet.createRow (rowCount + 1);// Eine Schleife über der Zelle der neu erstellten Zeile erstellenfür (int j = 0; j
Excel-Manipulation mit der JXL-API
JXL ist auch ein weiteres bekanntes Glas zum Lesen von Excel-Dateien in Java und zum Schreiben von Dateien. Heutzutage wird POI in den meisten Projekten verwendet, aber vor POI war JXL nur eine Java-API für die Excel-Manipulation. Es ist eine sehr kleine und einfache API zum Excel-Lesen in Selen.
TIPPS: Mein Vorschlag ist, JXL in keinem neuen Projekt zu verwenden, da sich die Bibliothek seit 2010 nicht mehr in der aktiven Entwicklung befindet und die 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/
Sie können auch ein Demo-Beispiel in dieser komprimierten Datei für JXL erhalten.
Einige der Funktionen:
- JXL kann Excel-Dateien in Selenium für 95, 97, 2000, XP, 2003 Arbeitsmappen lesen.
- Wir können mit Englisch, Französisch, Spanisch, Deutsch arbeiten.
- Das Kopieren eines Diagramms und das Einfügen von Bildern in Excel ist möglich
Nachteil:
- Wir können nur Excel 97 und höher schreiben (das Schreiben in Excel 95 wird nicht unterstützt).
- JXL unterstützt das XLSX-Format der Excel-Datei nicht.
- Es generiert eine Tabelle im Excel 2000-Format.
Zusammenfassung:
- Excel-Datei kann durch Java IO-Operation gelesen werden. Dafür müssen wir Apache POI Jar verwenden .
- Es gibt zwei Arten von Arbeitsmappen in Excel-Dateien: XLSX- und XLS- Dateien.
- POI hat verschiedene Interfaces Workbook, Sheet, Row, Cell.
- Diese Schnittstellen werden implementiert durch entsprechende XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) und XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ) Dateimanipulation Klassen.
- JXL ist eine weitere API für die Excel-Verarbeitung in Selen.
- JXL kann nicht mit dem Excel-XLSX-Format arbeiten.