Sådan læses / skrives data fra Excel-fil: Selen POI

Indholdsfortegnelse:

Anonim

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:

Klasser og grænseflader i Apache POI

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

Bemæ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.