Kako čitati/pisati podatke iz Excel datoteke: Selenium POI

Datotečni IO kritičan je dio svakog softverskog procesa. Često stvaramo datoteku, otvaramo je i ažuriramo nešto ili brišemo na našim računalima. Isti je slučaj sa Selenium Automatizacija. Trebamo proces za manipuliranje datotekama Selenium.

Java nudi nam različite klase za manipulaciju datotekama Selenium. U ovom ćemo vodiču naučiti kako dalje čitati i pisati nadmašiti datoteka uz pomoć Java IO paket i apaš Biblioteka POI.

Apache POI u Selenium

The Apache POI u Selenium široko je korišten API za testiranje temeljeno na selenu. To je biblioteka POI napisana u Java koji korisnicima daje API za manipuliranje Microsoft dokumenti poput .xls i .xlsx. Korisnici mogu jednostavno stvarati, mijenjati i čitati/pisati u excel datoteke. POI je kratica za "lošu implementaciju maskiranja".

Izvoz Excela

Kako rukovati excel datotekom pomoću POI (Maven POM ovisnost)

Rukovanje Excel datotekom pomoću POI

Za čitanje i pisanje Excel datoteke Java, Apache pruža vrlo poznatu knjižnicu POI. Ova biblioteka je dovoljno sposobna za čitanje i pisanje oboje XLS i Xlsx format datoteke programa Excel.

Čitati XLS datoteke, an HSSF implementaciju osigurava POI biblioteka.

Čitati XLSX, XSSF provedba POI knjižnica bit će izbor. Proučimo ove implementacije u detalje.

Ako koristite Maven u svom projektu, ovisnost o Mavenu bit će

Rukovanje Excel datotekom pomoću POI

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

Ili jednostavno možete preuzeti najnoviju verziju POI jara s http://poi.apache.org/download.html & preuzmite najnoviju zip datoteku

Rukovanje Excel datotekom pomoću POI

Kada preuzmete zip datoteku za ovaj jar, trebate ga raspakirati i dodati sve te jar-ove u put klase vašeg projekta.

Rukovanje Excel datotekom pomoću POI

Klase i sučelja u POI

Klase i sučelja u Apache POI
Klase i sučelja u Apache POI

Slijedi popis različitih Java Sučelja i klase u POI za čitanje XLS i Xlsx datoteka-

  • Radna bilježnica: klase XSSFWorkbook i HSSFWorkbook implementiraju ovo sučelje.
  • XSSFRadna bilježnica: predstavlja klasni prikaz XLSX datoteke.
  • HSSF Radna bilježnica: predstavlja klasni prikaz XLS datoteke.
  • list: XSSFSheet i HSSFSheet klase implementiraju ovo sučelje.
  • XSSFSlist: je klasa koja predstavlja list u XLSX datoteci.
  • HSSFSlist: je klasa koja predstavlja list u XLS datoteci.
  • Red: XSSFRow i HSSFRow klase implementiraju ovo sučelje.
  • XSSFRow: je klasa koja predstavlja redak u listu XLSX datoteke.
  • HSSFRow: je klasa koja predstavlja redak u listu XLS datoteke.
  • Ćelija: XSSFCell i HSSFCell klase implementiraju ovo sučelje.
  • XSSFCell: je klasa koja predstavlja ćeliju u redu XLSX datoteke.
  • HSSFCell: Je klasa koja predstavlja ćeliju u nizu XLS datoteke.

Operacija čitanja/pisanja

Za naš primjer, razmotrit ćemo dolje dati Excel format datoteke

Čitaj Napiši OperaANJE

Čitanje podataka iz Excel datoteke

Kompletan primjer: Ovdje pokušavamo očitati podatke iz Excela 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");

    }

}

Napomena: Ne koristimo Testng okvir ovdje. Vodite razred kao Java Aplikacija koja koristi funkciju read excel in Selenium kao što je prikazano u gornjem primjeru.

Čitanje podataka iz Excel datoteke

Zapišite podatke u Excel datoteku

Kompletan primjer: Ovdje pokušavamo napisati podatke iz Excel datoteke dodavanjem novog retka u Excel datoteku

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

    }

}

Zapišite podatke u Excel datoteku

Excel manipulacija pomoću JXL API-ja

Excel manipulacija pomoću JXL API-ja

JXL je također još jedan poznati jar za čitanje Excel datoteke Java i pisanje datoteka. Danas se POI koristi u većini projekata, ali prije POI-a bio je samo JXL Java API za manipulaciju Excelom. To je vrlo mali i jednostavan API za čitanje programa Excel Selenium.

SAVJETI: Moj prijedlog je da se JXL ne koristi ni u jednom novom projektu jer knjižnica nije u aktivnom razvoju od 2010. i nedostatak značajke u usporedbi s POI API-jem.

Preuzmite JXL:

Ako želite raditi s JXL-om, možete ga preuzeti s ove poveznice

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

Excel manipulacija pomoću JXL API-ja

Također možete dobiti demo primjer unutar ove komprimirane datoteke za JXL.

Neke značajke:

  • JXL može čitati Excel datoteku Selenium za 95, 97, 2000, XP, 2003 radna knjižica.
  • Možemo raditi s engleskim, francuskim, španjolskim, njemačkim jezikom.
  • Kopiranje grafikona i umetanje slike u Excelu je moguće

Nedostatak:

  • Možemo pisati samo Excel 97 i novije (pisanje u Excelu 95 nije podržano).
  • JXL ne podržava XLSX format excel datoteke.
  • Generira proračunsku tablicu u formatu Excel 2000.

Rezime

  • Excel datoteku može čitati Java IO operacija. Za to trebamo koristiti Apache POI Jar.
  • Postoje dvije vrste radne knjige u Excel datoteci, Xlsx i XLS slika.
  • POI ima različita sučelja Radna knjiga, List, Redak, Ćelija.
  • Ova su sučelja implementirana odgovarajućim XLS (HSSFRadna knjiga, HSSFSlist, HSSFRow, HSSFCell) I Xlsx (XSSFRadna knjiga, XSSFSlist, XSSFRow, XSSFCell) klase manipulacije datotekama.
  • JXL je još jedan API za rukovanje Excelom Selenium.
  • JXL ne može raditi s XLSX formatom excela.