Hur man läser / skriver data från Excel-fil: Selen POI

Innehållsförteckning:

Anonim

File IO är en viktig del av alla programvaruprocesser. Vi skapar ofta en fil, öppnar den och uppdaterar något eller tar bort den i våra datorer. Samma är fallet med Selenium Automation. Vi behöver en process för att manipulera filer med Selen.

Java ger oss olika klasser för filmanipulation med selen. I den här handledningen ska vi lära oss hur vi kan läsa och skriva på Excel-filer med hjälp av Java IO-paketet och Apache POI-biblioteket.

Apache IP i selen

Den Apache POI i Selenium är en allmänt använd API för selen uppgifter baserad testning. Det är ett POI-bibliotek skrivet i Java som ger användarna ett API för att manipulera Microsoft-dokument som .xls och .xlsx. Användare kan enkelt skapa, ändra och läsa / skriva i Excel-filer. POI står för "Poor Implementation Implementation."

  • Så här hanterar du Excel-filer med POI (Maven POM Dependency)
  • Klasser och gränssnitt i intressepunkter
  • Läsning / skrivning
  • Läs data från Excel-filen
  • Skriv data i Excel-fil
  • Excel Manipulation med JXL API

Exporterar Excel

Så här hanterar du Excel-filer med POI (Maven POM Dependency)

För att läsa och skriva Excel-filer i Java, erbjuder Apache en mycket känd intressepunkt för biblioteket. Detta bibliotek kan tillräckligt för att läsa och skriva både XLS- och XLSX- filformat i Excel.

För att läsa XLS- filer tillhandahålls en HSSF- implementering av POI-biblioteket.

För att läsa XLSX kommer XSSF- implementering av POI- biblioteket att vara valet. Låt oss studera dessa implementeringar i detalj.

Om du använder Maven i ditt projekt kommer Maven-beroendet att vara

 org.apache.poi  poi  4.1.1 

Eller så kan du helt enkelt ladda ner den senaste versionen av POI-burkar från http://poi.apache.org/download.html och ladda ner den senaste zip-filen.

När du laddar ner zip-filen för den här burken måste du packa upp den och lägga till alla burkar i klassvägen för ditt projekt.

Klasser och gränssnitt i intressepunkter:

Klasser och gränssnitt i Apache POI

Nedan följer en lista över olika Java-gränssnitt och klasser i POI för läsning av XLS- och XLSX- filer-

  • Arbetsbok : XSSFWorkbook- och HSSFWorkbook-klasser implementerar detta gränssnitt.
  • XSSFWorkbook : Är en klassrepresentation av XLSX-filen.
  • HSSFWorkbook : Är en klassrepresentation av XLS-filen.
  • Blad : Klasserna XSSFSheet och HSSFSheet implementerar detta gränssnitt.
  • XSSFSheet : Är en klass som representerar ett ark i en XLSX-fil.
  • HSSFSheet : Är en klass som representerar ett ark i en XLS-fil.
  • Rad : XSSFRow och HSSFRow klasser implementerar detta gränssnitt.
  • XSSFRow : Är en klass som representerar en rad i arket i XLSX-filen.
  • HSSFRow : Är en klass som representerar en rad i arket med XLS-filen.
  • Cell : XSSFCell- och HSSFCell-klasser implementerar detta gränssnitt.
  • XSSFCell : Är en klass som representerar en cell i en rad med XLSX-filen.
  • HSSFCell: Är en klass som representerar en cell i en rad med XLS-filen.

Läs- / skrivoperation-

För vårt exempel kommer vi att överväga det angivna Excel-filformatet nedan

Läs data från Excel-filen

Komplett exempel: Här försöker vi läsa data från Excel i Selen:

paket excelExportAndFileIO;importera java.io.File;importera java.io.FileInputStream;importera java.io.IOException;importera org.apache.poi.hssf.usermodel.HSSFWorkbook;importera org.apache.poi.ss.usermodel.Row;importera org.apache.poi.ss.usermodel.Sheet;importera org.apache.poi.ss.usermodel.Workbook;importera org.apache.poi.xssf.usermodel.XSSFWorkbook;offentlig klass ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) kastar IOException {// Skapa ett objekt av filklass för att öppna xlsx-filenFilfil = ny fil (filePath + "\\" + filnamn);// Skapa ett objekt av FileInputStream-klassen för att läsa Excel-filenFileInputStream inputStream = ny FileInputStream (fil);Arbetsbok guru99Workbook = null;// Hitta filtillägget genom att dela upp filnamnet i substring och bara få tilläggsnamnetSträng fileExtensionName = fileName.substring (fileName.indexOf ("."));// Kontrollera tillståndet om filen är xlsx-filom (fileExtensionName.equals (". xlsx")) {// Om det är xlsx-fil skapar du objekt för XSSFWorkbook-klassenguru99Workbook = ny XSSFWorkbook (inputStream);}// Kontrollera tillståndet om filen är xls-filannars om (fileExtensionName.equals (". xls")) {// Om det är xls-fil skapar du objekt av HSSFWorkbook-klassguru99Workbook = ny HSSFWorkbook (inputStream);}// Läs arket i arbetsboken med dess namnSheet guru99Sheet = guru99Workbook.getSheet (sheetName);// Hitta antal rader i Excel-filenint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Skapa en slinga över alla raderna i Excel-filen för att läsa denför (int i = 0; i 

Obs! Vi använder inte Testng-ramverket här. Kör klassen som Java-applikation med funktionen read excel i Selen som visas i exemplet ovan.

Skriv data i Excel-fil

Komplett exempel: Här försöker vi skriva data från Excel-fil genom att lägga till en ny rad i Excel-fil

paket excelExportAndFileIO;importera java.io.File;importera java.io.FileInputStream;importera java.io.FileOutputStream;importera java.io.IOException;importera org.apache.poi.hssf.usermodel.HSSFWorkbook;importera org.apache.poi.ss.usermodel.Cell;importera org.apache.poi.ss.usermodel.Row;importera org.apache.poi.ss.usermodel.Sheet;importera org.apache.poi.ss.usermodel.Workbook;importera org.apache.poi.xssf.usermodel.XSSFWorkbook;offentlig klass WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) kastar IOException {// Skapa ett objekt av filklass för att öppna xlsx-filenFilfil = ny fil (filePath + "\\" + filnamn);// Skapa ett objekt av FileInputStream-klassen för att läsa Excel-filenFileInputStream inputStream = ny FileInputStream (fil);Arbetsbok guru99Workbook = null;// Hitta filtillägget genom att dela upp filnamnet i substring och bara få tilläggsnamnetSträng fileExtensionName = fileName.substring (fileName.indexOf ("."));// Kontrollera tillståndet om filen är xlsx-filom (fileExtensionName.equals (". xlsx")) {// Om det är xlsx-fil skapar du objekt för XSSFWorkbook-klassenguru99Workbook = ny XSSFWorkbook (inputStream);}// Kontrollera tillståndet om filen är xls-filannars om (fileExtensionName.equals (". xls")) {// Om det är xls-fil skapar du objekt för XSSFWorkbook-klassenguru99Workbook = ny HSSFWorkbook (inputStream);}// Läs excel-ark efter arknamnSheet sheet = guru99Workbook.getSheet (sheetName);// Få det aktuella antalet rader i Excel-filenint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Få första raden från arketRadrad = ark.getRow (0);// Skapa en ny rad och lägg till den senast på arketRad newRow = sheet.createRow (rowCount + 1);// Skapa en slinga över cellen i den nyskapade radenför (int j = 0; j 

Excel Manipulation med JXL API

JXL är också en annan känd burk för att läsa Excel-filer i Java och skriva filer. Numera används POI i de flesta av projekten, men före POI var JXL bara Java API för Excel-manipulation. Det är ett väldigt litet och enkelt API för excel-läsning i Selen.

TIPS: Mitt förslag är att inte använda JXL i något nytt projekt eftersom biblioteket inte är i aktiv utveckling från 2010 och brist på funktion jämfört med POI API.

Ladda ner JXL:

Om du vill arbeta med JXL kan du ladda ner det från den här länken

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

Du kan också få ett demoexempel i den här zip-filen för JXL.

Några av funktionerna:

  • JXL kan läsa Excel-filer i Selenium för 95, 97, 2000, XP, 2003 arbetsbok.
  • Vi kan arbeta med engelska, franska, spanska, tyska.
  • Kopiering av ett diagram och en bildinsättning i Excel är möjlig

Nackdel:

  • Vi kan bara skriva Excel 97 och senare (skrivning i Excel 95 stöds inte).
  • JXL stöder inte XLSX-format för Excel-fil.
  • Det genererar kalkylblad i Excel 2000-format.

Sammanfattning:

  • Excel-filen kan läsas med Java IO-operation. För det måste vi använda Apache POI Jar .
  • Det finns två typer av en arbetsbok i Excel-filen, XLSX- och XLS- filer.
  • Intressepunkter har olika gränssnittsarbetsbok, ark, rad, cell.
  • Dessa gränssnitt implementeras av motsvarande filmanipulationsklasser för XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) och XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ).
  • JXL är ett annat API för Excel-hantering i Selen.
  • JXL kan inte fungera med XLSX-format av Excel.