Datoteka IO je kritičen del katerega koli postopka programske opreme. Datoteko pogosto ustvarimo, odpremo in nekaj posodobimo ali izbrišemo v naših računalnikih. Enako velja za Selenium Automation. Za obdelavo datotek s selenom potrebujemo postopek.
Java nam ponuja različne razrede za upravljanje datotek s selenom. V tej vadnici bomo izvedeli, kako lahko beremo in pišemo v Excelovi datoteki s pomočjo Java IO paketa in knjižnice Apache POI.
Apache POI v selenu
Apache POI v Selen se pogosto uporablja API podatkov selena poganja testiranje. To je knjižnica POI, napisana v Javi, ki uporabnikom daje API za manipulacijo z Microsoftovimi dokumenti, kot sta .xls in .xlsx. Uporabniki lahko preprosto ustvarjajo, spreminjajo in berejo / pišejo v datoteke excel. POI pomeni „Slaba izvedba zameglitve“.
- Kako ravnati z datoteko excel s pomočjo POI (Maven POM Dependency)
- Predavanja in vmesniki v POI
- Operacija branja / pisanja
- Preberite podatke iz Excelove datoteke
- Zapišite podatke v datoteko Excel
- Excel manipulacija z uporabo JXL API
Izvažanje Excela
Kako ravnati z datoteko excel s pomočjo POI (Maven POM Dependency)
Za branje in pisanje Excelove datoteke v Javi Apache ponuja zelo znano knjižnico POI. Ta knjižnica je dovolj sposobna za branje in pisanje datotek XLS in XLSX v Excelu.
Za branje datotek XLS knjižnica POI zagotavlja izvedbo HSSF .
Za branje XLSX bo izbira izvedba knjižnice POI XSSF . Podrobno preučimo te izvedbe.
Če v svojem projektu uporabljate Maven, bo odvisnost od Mavena
org.apache.poi poi 4.1.1
Lahko pa preprosto prenesete najnovejšo različico POI kozarcev s spletnega mesta http://poi.apache.org/download.html in prenesete najnovejšo zip datoteko
Ko prenesete datoteko zip za ta kozarec, jo morate razpakirati in vse te kozarce dodati na pot razreda vašega projekta.
Razredi in vmesniki v POI:
Sledi seznam različnih vmesnikov Java in razredov v POI za branje datotek XLS in XLSX -
- Delovni zvezek : Razredi XSSFWorkbook in HSSFWorkbook izvajajo ta vmesnik.
- XSSFWorkbook : je predstavitev datoteke XLSX v razredu.
- HSSFWorkbook : je predstavitev datoteke XLS v razredu.
- List : Razredi XSSFSheet in HSSFSheet izvajajo ta vmesnik.
- XSSFSheet : Je razred, ki predstavlja list v datoteki XLSX.
- HSSFSheet : Je razred, ki predstavlja list v datoteki XLS.
- Vrstica : Razredi XSSFRow in HSSFRow izvajajo ta vmesnik.
- XSSFRow : Je razred, ki predstavlja vrstico na listu datoteke XLSX.
- HSSFRow : je razred, ki predstavlja vrstico na listu datoteke XLS.
- Celica : razreda XSSFCell in HSSFCell izvajajo ta vmesnik.
- XSSFCell : je razred, ki predstavlja celico v vrsti datoteke XLSX.
- HSSFCell: je razred, ki predstavlja celico v vrsti datoteke XLS.
Branje / pisanje
Za naš primer bomo spodaj upoštevali dan format datoteke Excel
Preberite podatke iz Excelove datoteke
Popoln primer: Tu poskušamo prebrati podatke iz Excela v seleniju:
paket excelExportAndFileIO;import java.io.File;uvoz java.io.FileInputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;uvoz 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;javni razred ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) vrže IOException {// Ustvari objekt razreda File, da odpre datoteko xlsxDatoteka datoteke = nova datoteka (filePath + "\\" + fileName);// Ustvari objekt razreda FileInputStream za branje datoteke excelFileInputStream inputStream = nov FileInputStream (datoteka);Delovni zvezek guru99Workbook = null;// Poiščite pripono datoteke tako, da razdelite ime datoteke v podniz in dobite samo ime priponeNiz fileExtensionName = fileName.substring (fileName.indexOf ("."));// Preverite stanje, če je datoteka xlsxif (fileExtensionName.equals (". xlsx")) {// Če gre za datoteko xlsx, potem ustvarite objekt razreda XSSFWorkbookguru99Workbook = nova XSSFWorkbook (inputStream);}// Preveri stanje, če je datoteka xlssicer če (fileExtensionName.equals (". xls")) {// Če gre za datoteko xls, potem ustvarite objekt razreda HSSFWorkbookguru99Workbook = nova HSSFWorkbook (inputStream);}// Branje lista v delovnem zvezku po njegovem imenuList guru99Sheet = guru99Workbook.getSheet (sheetName);// Poiščite število vrstic v datoteki excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Ustvari zanko nad vsemi vrsticami datoteke excel, da jo preberešfor (int i = 0; iOpomba: Tu ne uporabljamo ogrodja Testng. Zaženite razred kot aplikacijo Java s funkcijo read excel v programu Selenium, kot je prikazano v zgornjem primeru.
Zapišite podatke v datoteko Excel
Popoln primer: Tu poskušamo zapisati podatke iz datoteke Excel z dodajanjem nove vrstice v datoteko Excel
paket excelExportAndFileIO;import java.io.File;uvoz 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;uvoz 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;javni razred WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) vrže IOException {// Ustvari objekt razreda File, da odpre datoteko xlsxDatoteka datoteke = nova datoteka (filePath + "\\" + fileName);// Ustvari objekt razreda FileInputStream za branje datoteke excelFileInputStream inputStream = nov FileInputStream (datoteka);Delovni zvezek guru99Workbook = null;// Poiščite pripono datoteke tako, da razdelite ime datoteke v podniz in dobite samo ime priponeNiz fileExtensionName = fileName.substring (fileName.indexOf ("."));// Preverite stanje, če je datoteka xlsxif (fileExtensionName.equals (". xlsx")) {// Če gre za datoteko xlsx, potem ustvarite objekt razreda XSSFWorkbookguru99Workbook = nova XSSFWorkbook (inputStream);}// Preveri stanje, če je datoteka xlssicer če (fileExtensionName.equals (". xls")) {// Če gre za datoteko xls, potem ustvarite objekt razreda XSSFWorkbookguru99Workbook = nova HSSFWorkbook (inputStream);}// Branje Excelovega lista po imenu listaList stanja = guru99Workbook.getSheet (sheetName);// Pridobimo trenutno število vrstic v datoteki excelint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Vzemi prvo vrstico s listaVrstica vrstica = sheet.getRow (0);// Ustvari novo vrstico in jo dodaj na koncu listaVrstica newRow = sheet.createRow (rowCount + 1);// Ustvari zanko nad celico na novo ustvarjene vrsticeza (int j = 0; jExcel manipulacija z uporabo JXL API
JXL je tudi drugi znani kozarec za branje Excelove datoteke v Javi in pisanje datotek. Danes se POI uporablja v večini projektov, toda pred POI je bil JXL le Java API za manipulacijo v Excelu. To je zelo majhen in preprost API za excel branje v selenu.
NASVETI: Moj predlog je, da ne uporabljate JXL v nobenem novem projektu, ker knjižnica ni v aktivnem razvoju od leta 2010 in pomanjkanje funkcije v primerjavi s POI API.
Prenesite JXL:
Če želite sodelovati z JXL, ga lahko prenesete s te povezave
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
V tej stisnjeni datoteki za JXL lahko dobite tudi predstavitveni primer.
Nekatere funkcije:
- JXL lahko bere Excelovo datoteko v seleniju za delovni zvezek 95, 97, 2000, XP, 2003.
- Lahko delamo z angleščino, francoščino, španščino, nemščino.
- Možno je kopiranje grafikona in vstavljanje slik v Excelu
Slabost:
- Lahko pišemo samo Excel 97 in novejše (pisanje v Excelu 95 ni podprto).
- JXL ne podpira formata XLSX v datoteki excel.
- Ustvari preglednico v formatu Excel 2000.
Povzetek:
- Datoteko Excel je mogoče prebrati s pomočjo Java IO. Za to moramo uporabiti Apache POI Jar .
- V Excelovi datoteki obstajata dve vrsti delovnega zvezka, in sicer XLSX in XLS .
- POI ima različne vmesnike Delovni zvezek, List, Vrstica, Celica.
- Ti vmesniki so implementirani z ustreznimi razredi manipulacije datotek XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) in XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ).
- JXL je še en API za obdelavo Excela v programu Selenium.
- JXL ne more delovati z XLSX formatom excel.