Cum să citiți/scrieți date din fișierul Excel: Selenium POI

File IO este o parte critică a oricărui proces software. În mod frecvent, creăm un fișier, îl deschidem și actualizăm ceva sau îl ștergem din computerele noastre. La fel este și cazul Selenium Automatizare. Avem nevoie de un proces cu care să manipulăm fișierele Selenium.

Java ne oferă diferite clase pentru manipularea fișierelor Selenium. În acest tutorial, vom învăța cum putem citi și scrie mai departe Excel fișier cu ajutorul Java pachet IO și Apache Biblioteca POI.

Apache POI în Selenium

Apache POI în Selenium este un API utilizat pe scară largă pentru testarea bazată pe seleniu. Este o bibliotecă POI scrisă în Java care oferă utilizatorilor un API pentru manipulare Microsoft documente precum .xls și .xlsx. Utilizatorii pot crea, modifica și citi/scrie cu ușurință în fișiere Excel. POI înseamnă „Poor Obfuscation Implementation”.

Exportul Excel

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

Gestionați fișierul Excel folosind POI

Pentru a citi și a scrie fișierul Excel în Java, Apache oferă o bibliotecă foarte faimoasă POI. Această bibliotecă este suficient de capabilă să citească și să scrie pe ambele XLS și XLSX format de fișier Excel.

A citi XLS dosare, an HSSF implementarea este asigurată de biblioteca POI.

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

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

Gestionați fișierul Excel folosind POI

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.1</version>
</dependency>

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

Gestionați fișierul Excel folosind POI

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 de clasă a proiectului dumneavoastră.

Gestionați fișierul Excel folosind POI

Clase și interfețe în POI

Clasele și interfețele în Apache POI
Clasele și interfețele în Apache POI

Mai jos este o listă de diferite Java Interfețe și clase în POI pentru citit XLS și XLSX fişier-

  • Workbook: 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.
  • Coală: Clasele XSSFSheet și HSSFSheet implementează această interfață.
  • XSSFSsheet: Este o clasă care reprezintă o foaie într-un fișier XLSX.
  • HSSFSsheet: 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 din 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ă dintr-un rând de fișier XLSX.
  • Celulă HSSFC: Este o clasă care reprezintă o celulă dintr-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

Citeste, scrie OperaTION

Citiți datele din fișierul Excel

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

package 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;

public class ReadGuru99ExcelFile {

    public void readExcel(String filePath,String fileName,String sheetName) throws IOException{

    //Create an object of File class to open xlsx file

    File file =    new File(filePath+"\\"+fileName);

    //Create an object of FileInputStream class to read excel file

    FileInputStream inputStream = new FileInputStream(file);

    Workbook guru99Workbook = null;

    //Find the file extension by splitting file name in substring  and getting only extension name

    String fileExtensionName = fileName.substring(fileName.indexOf("."));

    //Check condition if the file is xlsx file

    if(fileExtensionName.equals(".xlsx")){

    //If it is xlsx file then create object of XSSFWorkbook class

    guru99Workbook = new XSSFWorkbook(inputStream);

    }

    //Check condition if the file is xls file

    else if(fileExtensionName.equals(".xls")){

        //If it is xls file then create object of HSSFWorkbook class

        guru99Workbook = new HSSFWorkbook(inputStream);

    }

    //Read sheet inside the workbook by its name

    Sheet guru99Sheet = guru99Workbook.getSheet(sheetName);

    //Find number of rows in excel file

    int rowCount = guru99Sheet.getLastRowNum()-guru99Sheet.getFirstRowNum();

    //Create a loop over all the rows of excel file to read it

    for (int i = 0; i < rowCount+1; i++) {

        Row row = guru99Sheet.getRow(i);

        //Create a loop to print cell values in a row

        for (int j = 0; j < row.getLastCellNum(); j++) {

            //Print Excel data in console

            System.out.print(row.getCell(j).getStringCellValue()+"|| ");

        }

        System.out.println();
    } 

    }  

    //Main function is calling readExcel function to read data from excel file

    public static void main(String...strings) throws IOException{

    //Create an object of ReadGuru99ExcelFile class

    ReadGuru99ExcelFile objExcelFile = new ReadGuru99ExcelFile();

    //Prepare the path of excel file

    String filePath = System.getProperty("user.dir")+"\\src\\excelExportAndFileIO";

    //Call read file method of the class to read data

    objExcelFile.readExcel(filePath,"ExportExcel.xlsx","ExcelGuru99Demo");

    }

}

Notă: nu folosim Testng cadru aici. Rulați clasa ca Java Aplicație care utilizează funcția citire excel în Selenium așa cum se arată în exemplul de mai sus.

Citiți date din fișierul Excel

Scrieți datele pe fișierul Excel

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

package 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) throws IOException{

        //Create an object of File class to open xlsx file

        File file =    new File(filePath+"\\"+fileName);

        //Create an object of FileInputStream class to read excel file

        FileInputStream inputStream = new FileInputStream(file);

        Workbook guru99Workbook = null;

        //Find the file extension by splitting  file name in substring and getting only extension name

        String fileExtensionName = fileName.substring(fileName.indexOf("."));

        //Check condition if the file is xlsx file

        if(fileExtensionName.equals(".xlsx")){

        //If it is xlsx file then create object of XSSFWorkbook class

        guru99Workbook = new XSSFWorkbook(inputStream);

        }

        //Check condition if the file is xls file

        else if(fileExtensionName.equals(".xls")){

            //If it is xls file then create object of XSSFWorkbook class

            guru99Workbook = new HSSFWorkbook(inputStream);

        }    

    //Read excel sheet by sheet name    

    Sheet sheet = guru99Workbook.getSheet(sheetName);

    //Get the current count of rows in excel file

    int rowCount = sheet.getLastRowNum()-sheet.getFirstRowNum();

    //Get the first row from the sheet

    Row row = sheet.getRow(0);

    //Create a new row and append it at last of sheet

    Row newRow = sheet.createRow(rowCount+1);

    //Create a loop over the cell of newly created Row

    for(int j = 0; j < row.getLastCellNum(); j++){

        //Fill data in row

        Cell cell = newRow.createCell(j);

        cell.setCellValue(dataToWrite[j]);

    }

    //Close input stream

    inputStream.close();

    //Create an object of FileOutputStream class to create write data in excel file

    FileOutputStream outputStream = new FileOutputStream(file);

    //write data in the excel file

    guru99Workbook.write(outputStream);

    //close output stream

    outputStream.close();
	
    }

    public static void main(String...strings) throws IOException{

        //Create an array with the data in the same order in which you expect to be filled in excel file

        String[] valueToWrite = {"Mr. E","Noida"};

        //Create an object of current class

        WriteGuru99ExcelFile objExcelFile = new WriteGuru99ExcelFile();

        //Write the file using file name, sheet name and the data to be filled

        objExcelFile.writeExcel(System.getProperty("user.dir")+"\\src\\excelExportAndFileIO","ExportExcel.xlsx","ExcelGuru99Demo",valueToWrite);

    }

}

Scrieți date pe fișierul Excel

Manipulare Excel folosind API-ul JXL

Manipulare Excel folosind API-ul JXL

JXL este, de asemenea, un alt borcan faimos pentru a citi fișierul Excel Java și scrierea fișierelor. În zilele noastre, POI este folosit în majoritatea proiectelor, dar înainte de POI, JXL era doar Java API pentru manipularea Excel. Este un API foarte mic și simplu pentru citirea Excel Selenium.

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

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/

Manipulare Excel folosind API-ul JXL

De asemenea, puteți obține un exemplu demonstrativ în acest fișier arhivat pentru JXL.

Unele dintre caracteristici:

  • JXL este capabil să citească fișierul Excel în Selenium pentru registrul de lucru 95, 97, 2000, XP, 2003.
  • Putem lucra cu engleza, franceza, spaniola, germana.
  • Copierea unei diagrame și inserarea unei imagini în Excel este posibilă

Dezavantaj:

  • Putem scrie doar Excel 97 și mai târziu (scrierea în Excel 95 nu este acceptată).
  • JXL nu acceptă formatul XLSX al fișierului Excel.
  • Acesta generează o foaie de calcul în format Excel 2000.

Rezumat

  • Fișierul Excel poate fi citit de Java Operare IO. Pentru asta, trebuie să folosim Apache POI Jar.
  • Există două tipuri de registru de lucru în fișierul Excel, XLSX și XLS fișiere.
  • POI are diferite interfețe Caiet de lucru, Foaie, Rând, Celulă.
  • Aceste interfețe sunt implementate prin corespondență XLS (HSSFWorkbook, HSSFSsheet, HSSFRow, HSSFCell) Şi XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) clase de manipulare a fișierelor.
  • JXL este un alt API pentru gestionarea Excel Selenium.
  • JXL nu poate funcționa cu formatul XLSX de Excel.