Ako čítať / zapisovať údaje zo súboru programu Excel: selén POI

Obsah:

Anonim

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:

Triedy a rozhrania v Apache 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; i 

Pozná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.