Cum să citiți / scrieți date dintr-un fișier Excel: Selenium POI

Cuprins:

Anonim

Fișierul IO este o parte critică a oricărui proces software. Creăm frecvent un fișier, îl deschidem și actualizăm ceva sau îl ștergem în computerele noastre. Același lucru este cazul cu Selenium Automation. Avem nevoie de un proces pentru a manipula fișiere cu Selenium.

Java ne oferă diferite clase pentru manipularea fișierelor cu seleniu. În acest tutorial, vom învăța cum putem citi și scrie pe fișierul Excel cu ajutorul pachetului Java IO și a bibliotecii Apache POI.

Apache POI în seleniu

POI - ul Apache Seleniul este un API utilizat pe scară largă pentru date de seleniu condus de testare. Este o bibliotecă POI scrisă în Java care oferă utilizatorilor un API pentru manipularea documentelor Microsoft precum .xls și .xlsx. Utilizatorii pot crea, modifica și citi / scrie cu ușurință în fișiere Excel. POI înseamnă „Implementarea slabă a ofuscării”.

  • Cum să gestionați fișierul Excel folosind POI (Maven POM Dependency)
  • Cursuri și interfețe în POI
  • Operație de citire / scriere
  • Citiți datele din fișierul Excel
  • Scrieți date în fișierul Excel
  • Manipulare Excel folosind API JXL

Exportul Excel

Cum să gestionați fișierul Excel folosind POI (Maven POM Dependency)

Pentru a citi și scrie fișier Excel în Java, Apache oferă o bibliotecă foarte renumită POI. Această bibliotecă este suficient de capabilă să citească și să scrie atât formatul de fișier XLS, cât și formatul XLSX din Excel.

Pentru a citi fișiere XLS , o implementare HSSF este furnizată de biblioteca POI.

Pentru a citi XLSX, implementarea XSSF a bibliotecii POI va fi alegerea. Să studiem în detaliu aceste implementări.

Dacă utilizați Maven în proiectul dvs., dependența Maven va fi

 org.apache.poi  poi  4.1.1 

Sau puteți descărca pur și simplu cea mai recentă versiune borcane POI de la http://poi.apache.org/download.html și descărcați cel mai recent fișier zip

Când descărcați fișierul zip pentru acest borcan, trebuie să îl dezarhivați și să adăugați toate aceste borcane la calea clasei a proiectului dvs.

Cursuri și interfețe în POI:

Clase și interfețe în Apache POI

Urmează o listă a diferitelor interfețe Java și clase în PDI pentru citirea XLS și XLSX File-

  • Cartea de lucru : clasele XSSFWorkbook și HSSFWorkbook implementează această interfață.
  • XSSFWorkbook : Este o reprezentare de clasă a fișierului XLSX.
  • HSSFWorkbook : Este o reprezentare de clasă a fișierului XLS.
  • Foaie : Clasele XSSFSheet și HSSFSheet implementează această interfață.
  • XSSFSheet : Este o clasă care reprezintă o foaie într-un fișier XLSX.
  • HSSFSheet : Este o clasă care reprezintă o foaie într-un fișier XLS.
  • Rând : Clasele XSSFRow și HSSFRow implementează această interfață.
  • XSSFRow : Este o clasă care reprezintă un rând în foaia fișierului XLSX.
  • HSSFRow : Este o clasă care reprezintă un rând în foaia fișierului XLS.
  • Celulă : clasele XSSFCell și HSSFCell implementează această interfață.
  • XSSFCell : este o clasă care reprezintă o celulă într-un rând de fișier XLSX.
  • HSSFCell: este o clasă care reprezintă o celulă într-un rând de fișier XLS.

Operație de citire / scriere-

Pentru exemplul nostru, vom lua în considerare mai jos formatul de fișier Excel dat

Citiți datele din fișierul Excel

Exemplu complet: Aici încercăm să citim date din Excel în Selenium:

pachet excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import 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;import org.apache.poi.xssf.usermodel.XSSFWorkbook;clasă publică ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) aruncă IOException {// Creați un obiect din clasa File pentru a deschide fișierul xlsxFile file = new File (filePath + "\\" + fileName);// Creați un obiect din clasa FileInputStream pentru a citi fișierul ExcelFileInputStream inputStream = nou FileInputStream (fișier);Workbook guru99Workbook = nul;// Găsiți extensia de fișier împărțind numele fișierului în șir și obținând doar numele extensieiString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Verificați condiția dacă fișierul este fișier xlsxif (fileExtensionName.equals (". xlsx")) {// Dacă este fișier xlsx, atunci creați obiectul clasei XSSFWorkbookguru99Workbook = new XSSFWorkbook (inputStream);}// Verificați condiția dacă fișierul este fișier xlselse if (fileExtensionName.equals (". xls")) {// Dacă este fișier xls, atunci creați obiectul clasei HSSFWorkbookguru99Workbook = nou HSSFWorkbook (inputStream);}// Citiți foaia din registrul de lucru după numele săuFoaie guru99Sheet = guru99Workbook.getSheet (sheetName);// Găsiți numărul de rânduri în fișierul Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Creați o buclă peste toate rândurile fișierului Excel pentru ao citifor (int i = 0; i 

Notă: Nu folosim cadrul Testng aici. Rulați clasa ca aplicație Java utilizând funcția citit excel în Selenium așa cum se arată în exemplul de mai sus.

Scrieți date în fișierul Excel

Exemplu complet: Aici încercăm să scriem date dintr-un fișier Excel adăugând un rând nou în fișierul Excel

pachet excelExportAndFileIO;import java.io.File;import 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;import 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;public class WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) aruncă IOException {// Creați un obiect din clasa File pentru a deschide fișierul xlsxFile file = new File (filePath + "\\" + fileName);// Creați un obiect din clasa FileInputStream pentru a citi fișierul ExcelFileInputStream inputStream = nou FileInputStream (fișier);Workbook guru99Workbook = nul;// Găsiți extensia de fișier împărțind numele fișierului în șir și obținând doar numele extensieiString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Verificați condiția dacă fișierul este fișier xlsxif (fileExtensionName.equals (". xlsx")) {// Dacă este fișier xlsx, atunci creați obiectul clasei XSSFWorkbookguru99Workbook = new XSSFWorkbook (inputStream);}// Verificați condiția dacă fișierul este fișier xlselse if (fileExtensionName.equals (". xls")) {// Dacă este fișier xls, atunci creați obiectul clasei XSSFWorkbookguru99Workbook = nou HSSFWorkbook (inputStream);}// Citiți foaia Excel după numele foiiSheet sheet = guru99Workbook.getSheet (sheetName);// Obțineți numărul curent de rânduri din fișierul Excelint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Obțineți primul rând din foaieRând rând = sheet.getRow (0);// Creați un rând nou și adăugați-l la sfârșitul foiiRând newRow = sheet.createRow (rândCont + 1);// Creați o buclă peste celula Row-ului nou creatfor (int j = 0; j 

Manipulare Excel folosind API JXL

JXL este, de asemenea, un alt borcan celebru pentru a citi fișierul Excel în Java și a scrie fișiere. În zilele noastre, POI este utilizat în majoritatea proiectelor, dar înainte de POI, JXL era doar Java API pentru manipulare Excel. Este un API foarte mic și simplu pentru citirea excel în Selenium.

SFATURI: Sugestia mea este să nu folosiți JXL în niciun proiect nou, deoarece biblioteca nu este în dezvoltare activă din 2010 și lipsa caracteristicii în comparație cu POI API.

Descărcați JXL:

Dacă doriți să lucrați cu JXL, îl puteți descărca de pe acest link

https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/

De asemenea, puteți obține un exemplu de demonstrație în acest fișier comprimat pentru JXL.

Unele dintre caracteristici:

  • JXL poate citi fișierul Excel în Selenium pentru registrele de lucru 95, 97, 2000, XP, 2003.
  • Putem lucra cu engleza, franceza, spaniola, germana.
  • Este posibilă copierea unei diagrame și a inserării imaginilor în Excel

Dezavantaj:

  • Putem scrie Excel 97 și versiunile ulterioare (scrierea în Excel 95 nu este acceptată).
  • JXL nu acceptă formatul XLSX al fișierului excel.
  • Generează foaie de calcul în format Excel 2000.

Rezumat:

  • Fișierul Excel poate fi citit prin operația Java IO. Pentru asta, trebuie să folosim Apache POI Jar .
  • Există două tipuri de registre de lucru în fișierul Excel, fișierele XLSX și XLS .
  • POI are diferite interfețe registru de lucru, foaie, rând, celulă.
  • Aceste interfețe sunt implementate de clasele de manipulare a fișierelor XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) și XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ) corespunzătoare.
  • JXL este un alt API pentru gestionarea Excel în Selenium.
  • JXL nu poate funcționa cu formatul XLSX excel.