File IO er en kritisk del af enhver softwareproces. Vi opretter ofte en fil, åbner den & opdaterer noget eller sletter den i vores computere. Det samme er tilfældet med Selenium Automation. Vi har brug for en proces til at manipulere filer med Selen.
Java giver os forskellige klasser til filmanipulation med selen. I denne vejledning skal vi lære, hvordan vi kan læse og skrive på Excel-fil ved hjælp af Java IO-pakke og Apache POI-bibliotek.
Apache POI i selen
The Apache POI i selen er et meget anvendt API for selen data testning. Det er et POI-bibliotek skrevet i Java, der giver brugerne en API til at manipulere Microsoft-dokumenter som .xls og .xlsx. Brugere kan nemt oprette, ændre og læse / skrive i excel-filer. POI står for "Poor Implementation Implementation."
- Sådan håndteres Excel-fil ved hjælp af POI (Maven POM Dependency)
- Klasser og grænseflader i interessepunkter
- Læs / skriv-operation
- Læs data fra Excel-fil
- Skriv data i Excel-fil
- Excel Manipulation ved hjælp af JXL API
Eksport af Excel
Sådan håndteres Excel-fil ved hjælp af POI (Maven POM Dependency)
For at læse og skrive Excel-filer i Java giver Apache et meget berømt POI-bibliotek. Dette bibliotek er i stand til at læse og skrive både XLS- og XLSX -filformat i Excel.
For at læse XLS- filer leveres en HSSF- implementering af POI-biblioteket.
For at læse XLSX vil XSSF- implementering af POI- biblioteket være valget. Lad os studere disse implementeringer i detaljer.
Hvis du bruger Maven i dit projekt, vil Maven-afhængigheden være
org.apache.poi poi 4.1.1
Eller du kan simpelthen downloade den nyeste version af POI-krukker fra http://poi.apache.org/download.html og downloade den nyeste zip-fil
Når du downloader zip-filen til denne krukke, skal du pakke den ud og tilføje disse alle krukker til klassestien til dit projekt.
Klasser og grænseflader i interessepunkter:

Følgende er en liste over forskellige Java-grænseflader og klasser i POI til læsning af XLS- og XLSX- filer-
- Arbejdsbog : XSSFWorkbook og HSSFWorkbook klasser implementerer denne grænseflade.
- XSSFWorkbook : Er en klasse repræsentation af XLSX-filen.
- HSSFWorkbook : Er en klasse repræsentation af XLS-fil.
- Ark : XSSFSheet- og HSSFSheet-klasser implementerer denne grænseflade.
- XSSFSheet : Er en klasse, der repræsenterer et ark i en XLSX-fil.
- HSSFSheet : Er en klasse, der repræsenterer et ark i en XLS-fil.
- Række : XSSFRow og HSSFRow klasser implementerer denne grænseflade.
- XSSFRow : Er en klasse, der repræsenterer en række i arket med XLSX-filen.
- HSSFRow : Er en klasse, der repræsenterer en række i arket med XLS-filen.
- Celle : XSSFCell- og HSSFCell-klasser implementerer denne grænseflade.
- XSSFCell : Er en klasse, der repræsenterer en celle i en række af XLSX-filen.
- HSSFCell: Er en klasse, der repræsenterer en celle i en række af XLS-filen.
Læs / skriv operation-
For vores eksempel vil vi overveje nedenstående givne Excel-filformat
Læs data fra Excel-fil
Komplet eksempel: Her forsøger vi at læse data fra Excel i Selen:
pakke excelExportAndFileIO;import java.io.File;importere java.io.FileInputStream;importere 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;importer org.apache.poi.xssf.usermodel.XSSFWorkbook;offentlig klasse ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) kaster IOException {// Opret et objekt i filklassen for at åbne xlsx-filenFilfil = ny fil (filePath + "\\" + filnavn);// Opret et objekt i FileInputStream-klassen for at læse excel-filenFileInputStream inputStream = ny FileInputStream (fil);Arbejdsbog guru99Workbook = null;// Find filtypen ved at opdele filnavnet i substring og kun få navnet på udvidelsenString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Kontroller tilstanden, hvis filen er xlsx-filhvis (fileExtensionName.equals (". xlsx")) {// Hvis det er en xlsx-fil, skal du oprette objekt fra XSSFWorkbook-klassenguru99Workbook = ny XSSFWorkbook (inputStream);}// Kontroller tilstanden, hvis filen er xls-filellers hvis (fileExtensionName.equals (". xls")) {// Hvis det er xls-fil, skal du oprette objekt fra HSSFWorkbook-klassenguru99Workbook = ny HSSFWorkbook (inputStream);}// Læs arket inde i projektmappen ved navnArk guru99Sheet = guru99Workbook.getSheet (arknavn);// Find antallet af rækker i excel-filenint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Opret en sløjfe over alle rækkerne i Excel-filen for at læse denfor (int i = 0; iBemærk: Vi bruger ikke Testng-rammen her. Kør klassen som Java-applikation ved hjælp af funktionen read excel i Selen som vist i eksemplet ovenfor.
Skriv data i Excel-fil
Komplet eksempel: Her forsøger vi at skrive data fra Excel-fil ved at tilføje en ny række i Excel-fil
pakke excelExportAndFileIO;import java.io.File;importere java.io.FileInputStream;importere java.io.FileOutputStream;importere 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;importer org.apache.poi.xssf.usermodel.XSSFWorkbook;offentlig klasse WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) kaster IOException {// Opret et objekt i filklassen for at åbne xlsx-filenFilfil = ny fil (filePath + "\\" + filnavn);// Opret et objekt i FileInputStream-klassen for at læse excel-filenFileInputStream inputStream = ny FileInputStream (fil);Arbejdsbog guru99Workbook = null;// Find filtypen ved at opdele filnavnet i substring og kun få navnet på udvidelsenString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Kontroller tilstanden, hvis filen er xlsx-filhvis (fileExtensionName.equals (". xlsx")) {// Hvis det er en xlsx-fil, skal du oprette objekt fra XSSFWorkbook-klassenguru99Workbook = ny XSSFWorkbook (inputStream);}// Kontroller tilstanden, hvis filen er xls-filellers hvis (fileExtensionName.equals (". xls")) {// Hvis det er xls-fil, skal du oprette objektet til XSSFWorkbook-klassenguru99Workbook = ny HSSFWorkbook (inputStream);}// Læs excel-ark efter arknavnArkark = guru99Workbook.getSheet (arknavn);// Få det aktuelle antal rækker i excel-filenint rowCount = ark.getLastRowNum () - ark.getFirstRowNum ();// Få den første række fra arketRække række = ark.getRow (0);// Opret en ny række, og tilføj den sidst på arketRække newRow = sheet.createRow (rowCount + 1);// Opret en sløjfe over cellen i den nyoprettede rækkefor (int j = 0; j
Excel Manipulation ved hjælp af JXL API
JXL er også en anden berømt krukke til at læse Excel-fil i Java og skrive filer. I dag bruges POI i de fleste projekter, men før POI var JXL kun Java API til Excel-manipulation. Det er en meget lille og enkel API til excel-læsning i Selen.
TIPS: Mit forslag er ikke at bruge JXL i noget nyt projekt, fordi biblioteket ikke er i aktiv udvikling fra 2010 og manglende funktion sammenlignet med POI API.
Download JXL:
Hvis du vil arbejde med JXL, kan du downloade det fra dette link
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Du kan også få demoeksempel inde i denne zip-fil til JXL.
Nogle af funktionerne:
- JXL er i stand til at læse Excel-fil i Selenium til 95, 97, 2000, XP, 2003 projektmappe.
- Vi kan arbejde med engelsk, fransk, spansk, tysk.
- Kopiering af et diagram og en billedindsættelse i Excel er mulig
Ulempe:
- Vi kan kun skrive Excel 97 og senere (skrivning i Excel 95 understøttes ikke).
- JXL understøtter ikke Excel-filens XLSX-format.
- Det genererer regneark i Excel 2000-format.
Resumé:
- Excel-fil kan læses ved hjælp af Java IO-operation. Til det er vi nødt til at bruge Apache POI Jar .
- Der er to slags en projektmappe i Excel-fil, XLSX- og XLS- filer.
- POI har forskellige grænseflader, arbejdsbog, ark, række, celle.
- Disse grænseflader er implementeret af de tilsvarende filmanipulationsklasser XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) og XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ).
- JXL er en anden API til Excel-håndtering i Selen.
- JXL kan ikke arbejde med XLSX-format af Excel.