Hvordan lese / skrive data fra Excel-fil: Selen POI

Innholdsfortegnelse:

Anonim

File IO er en kritisk del av enhver programvareprosess. Vi oppretter ofte en fil, åpner den og oppdaterer noe eller sletter den i datamaskinene våre. Det samme er tilfellet med Selenium Automation. Vi trenger en prosess for å manipulere filer med Selen.

Java gir oss forskjellige klasser for filmanipulering med selen. I denne opplæringen skal vi lære hvordan vi kan lese og skrive på Excel-filer ved hjelp av Java IO-pakken og Apache POI-biblioteket.

Apache POI i Selen

Den Apache POI i Selen er et mye brukt API for selendatadrevet testing. Det er et POI-bibliotek skrevet i Java som gir brukerne et API for å manipulere Microsoft-dokumenter som .xls og .xlsx. Brukere kan enkelt opprette, endre og lese / skrive i Excel-filer. POI står for "Poor Implementation of Obfuscation."

  • Hvordan håndtere Excel-filer ved hjelp av POI (Maven POM Dependency)
  • Klasser og grensesnitt i interessepunkter
  • Les / skriv-operasjon
  • Les data fra Excel-fil
  • Skriv data på Excel-fil
  • Excel Manipulation ved hjelp av JXL API

Eksporterer Excel

Hvordan håndtere Excel-filer ved hjelp av POI (Maven POM Dependency)

For å lese og skrive Excel-filer i Java, gir Apache et veldig kjent biblioteks-POI. Dette biblioteket er i stand til å lese og skrive både XLS og XLSX filformat i Excel.

For å lese XLS- filer leveres en HSSF- implementering av POI-biblioteket.

For å lese XLSX vil XSSF- implementering av POI- biblioteket være valget. La oss studere disse implementeringene i detalj.

Hvis du bruker Maven i prosjektet ditt, vil Maven-avhengigheten være

 org.apache.poi  poi  4.1.1 

Eller du kan bare laste ned den siste versjonen av POI-krukker fra http://poi.apache.org/download.html og laste ned den siste zip-filen.

Når du laster ned zip-filen for denne krukken, må du pakke den ut og legge til alle glassene i klassebanen til prosjektet.

Klasser og grensesnitt i interessepunkter:

Klasser og grensesnitt i Apache POI

Følgende er en liste over forskjellige Java-grensesnitt og klasser i interessepunkter for å lese XLS- og XLSX- filer-

  • Arbeidsbok : XSSFWorkbook og HSSFWorkbook-klasser implementerer dette grensesnittet.
  • XSSFWorkbook : Er en klasse representasjon av XLSX fil.
  • HSSFWorkbook : Er en klassepresentasjon av XLS-fil.
  • Ark : XSSFSheet- og HSSFSheet-klasser implementerer dette grensesnittet.
  • XSSFSheet : Er en klasse som representerer et ark i en XLSX-fil.
  • HSSFSheet : Er en klasse som representerer et ark i en XLS-fil.
  • Rad : XSSFRow- og HSSFRow-klassene implementerer dette grensesnittet.
  • XSSFRow : Er en klasse som representerer en rad i arket med XLSX-filen.
  • HSSFRow : Er en klasse som representerer en rad i arket med XLS-filen.
  • Celle : XSSFCell- og HSSFCell-klasser implementerer dette grensesnittet.
  • XSSFCell : Er en klasse som representerer en celle i en rad med XLSX-filer.
  • HSSFCell: Er en klasse som representerer en celle i en rad med XLS-filer.

Les / skriv operasjon-

For vårt eksempel vil vi vurdere nedenfor gitt Excel-filformat

Les data fra Excel-fil

Komplett eksempel: Her prøver vi å lese data fra Excel i Selen:

pakke excelExportAndFileIO;importere java.io.File;importere java.io.FileInputStream;importere java.io.IOException;importer org.apache.poi.hssf.usermodel.HSSFWorkbook;importer org.apache.poi.ss.usermodel.Row;importer org.apache.poi.ss.usermodel.Sheet;importer org.apache.poi.ss.usermodel.Workbook;importer org.apache.poi.xssf.usermodel.XSSFWorkbook;offentlig klasse ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) kaster IOException {// Opprett et objekt av filklassen for å åpne xlsx-filenFilfil = ny fil (filePath + "\\" + filnavn);// Opprett et objekt av FileInputStream-klassen for å lese Excel-filenFileInputStream inputStream = ny FileInputStream (fil);Arbeidsbok guru99Arbeidsbok = null;// Finn filtypen ved å dele filnavnet i substring og få bare navnet på utvidelsenStreng fileExtensionName = fileName.substring (fileName.indexOf ("."));// Sjekk tilstanden hvis filen er xlsx-filhvis (fileExtensionName.equals (". xlsx")) {// Hvis det er xlsx-fil, opprett deretter objektet til XSSFWorkbook-klassenguru99Workbook = ny XSSFWorkbook (inputStream);}// Sjekk tilstanden hvis filen er xls-filannet hvis (fileExtensionName.equals (". xls")) {// Hvis det er xls-fil, opprett deretter objektet til HSSFWorkbook-klassenguru99Workbook = ny HSSFWorkbook (inputStream);}// Les arket inne i arbeidsboken ved navnArk guru99Sheet = guru99Workbook.getSheet (arknavn);// Finn antall rader i Excel-filenint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Lag en sløyfe over alle radene i Excel-filen for å lese denfor (int i = 0; i 

Merk: Vi bruker ikke Testng-rammeverket her. Kjør klassen som Java-applikasjon ved hjelp av funksjonsles excel i Selen som vist i eksempelet ovenfor.

Skriv data på Excel-fil

Komplett eksempel: Her prøver vi å skrive data fra Excel-fil ved å legge til en ny rad i Excel-fil

pakke excelExportAndFileIO;importere java.io.File;importere java.io.FileInputStream;importere java.io.FileOutputStream;importere java.io.IOException;importer org.apache.poi.hssf.usermodel.HSSFWorkbook;importer org.apache.poi.ss.usermodel.Cell;importer org.apache.poi.ss.usermodel.Row;importer org.apache.poi.ss.usermodel.Sheet;importer org.apache.poi.ss.usermodel.Workbook;importer org.apache.poi.xssf.usermodel.XSSFWorkbook;offentlig klasse WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) kaster IOException {// Opprett et objekt av filklassen for å åpne xlsx-filenFilfil = ny fil (filePath + "\\" + filnavn);// Opprett et objekt av FileInputStream-klassen for å lese Excel-filenFileInputStream inputStream = ny FileInputStream (fil);Arbeidsbok guru99Arbeidsbok = null;// Finn filtypen ved å dele filnavnet i substring og få bare navnet på utvidelsenStreng fileExtensionName = fileName.substring (fileName.indexOf ("."));// Sjekk tilstanden hvis filen er xlsx-filhvis (fileExtensionName.equals (". xlsx")) {// Hvis det er xlsx-fil, opprett deretter objektet til XSSFWorkbook-klassenguru99Workbook = ny XSSFWorkbook (inputStream);}// Sjekk tilstanden hvis filen er xls-filannet hvis (fileExtensionName.equals (". xls")) {// Hvis det er en xls-fil, opprett deretter objektet til XSSFWorkbook-klassenguru99Workbook = ny HSSFWorkbook (inputStream);}// Les Excel-ark etter arknavnArkark = guru99Workbook.getSheet (arknavn);// Få gjeldende antall rader i Excel-filenint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Få den første raden fra arketRadrekke = ark.getRow (0);// Opprett en ny rad og legg den til sist på arketRad newRow = sheet.createRow (rowCount + 1);// Lag en sløyfe over cellen til nyopprettede radfor (int j = 0; j 

Excel Manipulation ved hjelp av JXL API

JXL er også en annen berømt krukke for å lese Excel-filer i Java og skrive filer. I dag brukes POI i de fleste prosjektene, men før POI var JXL bare Java API for Excel-manipulering. Det er en veldig liten og enkel API for excel-lesing i Selen.

TIPS: Mitt forslag er å ikke bruke JXL i noe nytt prosjekt fordi biblioteket ikke er i aktiv utvikling fra 2010 og mangel på funksjonen sammenlignet med POI API.

Last ned JXL:

Hvis du vil jobbe med JXL, kan du laste den ned fra denne lenken

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

Du kan også få demoeksempel i denne zip-filen for JXL.

Noen av funksjonene:

  • JXL kan lese Excel-filer i Selenium for 95, 97, 2000, XP, 2003 arbeidsbok.
  • Vi kan jobbe med engelsk, fransk, spansk, tysk.
  • Kopiering av et diagram og bildeinnsetting i Excel er mulig

Ulempe:

  • Vi kan bare skrive Excel 97 og senere (skriving i Excel 95 støttes ikke).
  • JXL støtter ikke XLSX-format for Excel-fil.
  • Det genererer regneark i Excel 2000-format.

Sammendrag:

  • Excel-filen kan leses ved hjelp av Java IO-operasjon. For det må vi bruke Apache POI Jar .
  • Det er to typer arbeidsbok i Excel-fil, XLSX- og XLS- filer.
  • POI har forskjellige grensesnitt arbeidsbok, ark, rad, celle.
  • Disse grensesnitt er implementert ved tilsvarende XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) og XLSX- ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ) fil manipulasjon klasser.
  • JXL er et annet API for Excel-håndtering i Selen.
  • JXL kan ikke fungere med XLSX-format av Excel.