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)
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
<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
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.
Klassen und Schnittstellen in 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
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.
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);
}
}
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/
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.









