Kako brati / zapisovati podatke iz Excelove datoteke: Selen POI

Kazalo:

Anonim

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:

Predavanja in vmesniki v Apache 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; i 

Opomba: 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; j 

Excel 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.