File IO je kritickou súčasťou každého softvérového procesu. V našich počítačoch často vytvárame súbory, otvárame ich a niečo aktualizujeme alebo vymažeme. To isté je prípad Selenium Automation. Potrebujeme postup na manipuláciu so súbormi so selénom.
Java nám poskytuje rôzne triedy pre manipuláciu so súbormi so selénom. V tomto výučbe sa naučíme, ako môžeme čítať a písať v súbore Excel pomocou balíka Java IO a knižnice Apache POI.
Apache POI v seléne
Apache POI v Selén je široko používaný API pre selén dát riadené testovania. Jedná sa o knižnicu POI napísanú v prostredí Java, ktorá poskytuje používateľom API na manipuláciu s dokumentmi spoločnosti Microsoft, ako sú .xls a .xlsx. Používatelia môžu ľahko vytvárať, upravovať a čítať / zapisovať do súborov programu Excel. Skratka POI znamená „Zlá implementácia zmätku“.
- Ako spracovať súbor programu Excel pomocou POI (závislosť Maven POM)
- Triedy a rozhrania v POI
- Operácia čítania a zápisu
- Čítanie údajov zo súboru programu Excel
- Zapisujte údaje do súboru programu Excel
- Manipulácia s programom Excel pomocou rozhrania JXL API
Exportuje sa Excel
Ako spracovať súbor programu Excel pomocou POI (závislosť Maven POM)
Na čítanie a zápis súboru Excel v prostredí Java poskytuje Apache veľmi slávnu knižnicu POI. Táto knižnica je schopná čítať a zapisovať súbory vo formáte XLS aj XLSX v programe Excel.
Na načítanie súborov XLS poskytuje knižnica POI implementáciu HSSF .
Pri čítaní XLSX bude voľbou implementácia knižnice POI pomocou XSSF . Poďme si tieto implementácie podrobne preštudovať.
Ak vo svojom projekte používate Maven, závislosť Maven bude
org.apache.poi poi 4.1.1
Alebo si môžete jednoducho stiahnuť najnovšiu verziu pohárov POI z adresy http://poi.apache.org/download.html a stiahnuť najnovší súbor zip
Keď si stiahnete súbor zip pre túto nádobu, musíte ju rozbaliť a pridať všetky tieto nádoby na cestu triedy k vášmu projektu.
Triedy a rozhrania v POI:

Nasleduje zoznam rôznych rozhraní Java a tried v BZ na čítanie súborov XLS a XLSX -
- Zošit : Toto rozhranie implementujú triedy XSSFWorkbook a HSSFWorkbook.
- XSSFWorkbook : Je triedna reprezentácia súboru XLSX.
- HSSFWorkbook : Je triedna reprezentácia súboru XLS.
- List : Triedy XSSFSheet a HSSFSheet implementujú toto rozhranie.
- XSSFSheet : Je trieda predstavujúca hárok v súbore XLSX.
- HSSFSheet : Je trieda predstavujúca hárok v súbore XLS.
- Riadok : Toto rozhranie implementujú triedy XSSFRow a HSSFRow.
- XSSFRow : Je trieda predstavujúca riadok v hárku súboru XLSX.
- HSSFRow : Je trieda predstavujúca riadok v hárku súboru XLS.
- Bunka : Toto rozhranie implementujú triedy XSSFCell a HSSFCell.
- XSSFCell : Je trieda predstavujúca bunku v rade súboru XLSX.
- HSSFCell: Je trieda predstavujúca bunku v rade súboru XLS.
Operácia čítania a zápisu
Pre náš príklad zvážime nižšie uvedený formát súboru Excel
Čítanie údajov zo súboru programu Excel
Úplný príklad: Tu sa pokúšame načítať údaje z Excelu v seléne:
balík excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;importovať org.apache.poi.ss.usermodel.Row;importovať org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;verejná trieda ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) vyvolá IOException {// Vytvorenie objektu triedy File na otvorenie súboru xlsxFile file = new File (filePath + "\\" + fileName);// Vytvorenie objektu triedy FileInputStream na čítanie súboru programu ExcelFileInputStream inputStream = nový FileInputStream (súbor);Workbook guru99Workbook = null;// Vyhľadajte príponu súboru tak, že rozdelíte názov súboru do podreťazca a získate iba názov príponyReťazec fileExtensionName = fileName.substring (fileName.indexOf ("."));// Skontrolujte stav, či je súbor xlsxif (fileExtensionName.equals (". xlsx")) {// Ak je to súbor xlsx, potom vytvoríme objekt triedy XSSFWorkbookguru99Workbook = nový XSSFWorkbook (inputStream);}// Skontrolujte stav, či je súbor xlselse if (fileExtensionName.equals (". xls")) {// Ak je to súbor xls, potom vytvoríme objekt triedy HSSFWorkbookguru99Workbook = nový HSSFWorkbook (inputStream);}// Prečítajte si hárok v zošite podľa jeho názvuList guru99Sheet = guru99Workbook.getSheet (názov listu);// Nájde počet riadkov v súbore programu Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Vytvorte slučku cez všetky riadky excelového súboru, aby ste si ju prečítalipre (int i = 0; iPoznámka: Nepoužívame tu rámec Testng. Spustite triedu ako Java aplikáciu pomocou funkcie read excel v seléne, ako je to uvedené v príklade vyššie.
Zapisujte údaje do súboru programu Excel
Úplný príklad: Tu sa pokúšame zapisovať údaje zo súboru programu Excel pridaním nového riadku do súboru programu Excel
balík excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;importovať org.apache.poi.ss.usermodel.Cell;importovať org.apache.poi.ss.usermodel.Row;importovať org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;verejná trieda WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) vyvolá IOException {// Vytvorenie objektu triedy File na otvorenie súboru xlsxFile file = new File (filePath + "\\" + fileName);// Vytvorenie objektu triedy FileInputStream na čítanie súboru programu ExcelFileInputStream inputStream = nový FileInputStream (súbor);Workbook guru99Workbook = null;// Vyhľadajte príponu súboru tak, že rozdelíte názov súboru do podreťazca a získate iba názov príponyReťazec fileExtensionName = fileName.substring (fileName.indexOf ("."));// Skontrolujte stav, či je súbor xlsxif (fileExtensionName.equals (". xlsx")) {// Ak je to súbor xlsx, potom vytvoríme objekt triedy XSSFWorkbookguru99Workbook = nový XSSFWorkbook (inputStream);}// Skontrolujte stav, či je súbor xlselse if (fileExtensionName.equals (". xls")) {// Ak je to súbor xls, potom vytvoríme objekt triedy XSSFWorkbookguru99Workbook = nový HSSFWorkbook (inputStream);}// Prečítajte si hárok programu Excel podľa názvu hárkaHárok listu = guru99Workbook.getSheet (sheetName);// Získajte aktuálny počet riadkov v súbore programu Excelint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Získajte prvý riadok z hárkaRiadok riadku = sheet.getRow (0);// Vytvorte nový riadok a pripojte ho na koniec hárkuRiadok newRow = sheet.createRow (rowCount + 1);// Vytvorte slučku nad bunkou novo vytvoreného riadkupre (int j = 0; j
Manipulácia s programom Excel pomocou rozhrania JXL API
JXL je tiež ďalší slávny nástroj na čítanie súborov programu Excel v jazyku Java a na písanie súborov. V dnešnej dobe sa POI používa vo väčšine projektov, ale pred POI bolo JXL iba Java API pre manipuláciu s programom Excel. Jedná sa o veľmi malé a jednoduché API pre vynikajúce čítanie v seléne.
TIPY: Navrhujem nepoužívať JXL v žiadnom novom projekte, pretože knižnica nie je v aktívnom vývoji od roku 2010 a nedostatok tejto funkcie v porovnaní s POI API.
Stiahnite si JXL:
Ak chcete pracovať s JXL, môžete si ho stiahnuť z tohto odkazu
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Môžete tiež získať ukážkový príklad v tomto komprimovanom súbore pre JXL.
Niektoré z funkcií:
- JXL je schopný čítať excelový súbor v zošite selénu pre 95, 97, 2000, XP, 2003.
- Môžeme pracovať s angličtinou, francúzštinou, španielčinou, nemčinou.
- Kopírovanie grafu a vkladania obrázkov v programe Excel je možné
Nevýhoda:
- Môžeme písať iba program Excel 97 a novší (zápis v programe Excel 95 nie je podporovaný).
- JXL nepodporuje formát XLSX súboru programu Excel.
- Generuje tabuľku vo formáte Excel 2000.
Zhrnutie:
- Súbor Excel je možné načítať operáciou Java IO. Na to potrebujeme použiť Apache POI Jar .
- V súbore Excel sú dva druhy zošita, súbory XLSX a XLS .
- BZ má rôzne pracovné zošity, hárky, riadky a bunky rozhrania.
- Tieto rozhrania sú implementované zodpovedajúcimi triedami manipulácie so súbormi XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) a XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ).
- JXL je ďalšie API na spracovanie Excel v seléne.
- JXL nemôže pracovať s formátom XLSX programu Excel.