Adatok olvasása/írása Excel fájlból: Selenium POI

A fájl IO minden szoftverfolyamat kritikus része. Gyakran létrehozunk egy fájlt, megnyitjuk és frissítünk valamit, vagy töröljük a számítógépeinkről. Ugyanez a helyzet a Selenium Automatizálás. Szükségünk van egy folyamatra a fájlok kezeléséhez Selenium.

Java különböző osztályokat biztosít számunkra a fájlkezeléshez Selenium. Ebben az oktatóanyagban megtanuljuk, hogyan tudunk tovább írni és olvasni Excel fájl segítségével Java IO csomag és Apache POI könyvtár.

Apache POI be Selenium

A Apache POI be Selenium egy széles körben használt API a szelén adatvezérelt teszteléséhez. Ez egy POI könyvtár, amelybe be van írva Java amely API-t ad a felhasználóknak a manipulációhoz Microsoft olyan dokumentumok, mint az .xls és .xlsx. A felhasználók könnyen létrehozhatnak, módosíthatnak és olvashatnak/írhatnak Excel fájlokat. A POI a „Poor Obfuscation Implementation” rövidítése.

Excel exportálása

Az Excel fájl kezelése POI-val (Maven POM Dependency)

Excel fájl kezelése POI használatával

Excel fájl olvasása és írása Java, Az Apache egy nagyon híres könyvtári POI-t biztosít. Ez a könyvtár elég képes írni és olvasni egyaránt XLS és a XLSX Excel fájlformátum.

Olvasni XLS fájlok, an HSSF A megvalósítást a POI könyvtár biztosítja.

Olvasni XLSX, XSSF végrehajtása POI könyvtár lesz a választás. Tanulmányozzuk ezeket a megvalósításokat részletesen.

Ha Maven-t használ a projektben, a Maven-függőség a következő lesz

Excel fájl kezelése POI használatával

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

Vagy egyszerűen letöltheti a POI tégelyek legújabb verzióját innen http://poi.apache.org/download.html és töltse le a legújabb zip fájlt

Excel fájl kezelése POI használatával

Amikor letölti a zip fájlt ehhez a jarhoz, ki kell csomagolnia, és hozzá kell adnia ezeket az összes jar-t a projekt osztályútvonalához.

Excel fájl kezelése POI használatával

Osztályok és interfészek a POI-ban

Osztályok és interfészek az Apache POI-ban
Osztályok és interfészek az Apache POI-ban

Az alábbiakban egy lista a különböző Java Interfészek és osztályok POI az olvasáshoz XLS és a XLSX filé-

  • Munkafüzet: Az XSSFWorkbook és a HSSFWorkbook osztályok valósítják meg ezt a felületet.
  • XSSFWorkbook: Az XLSX fájl osztályábrázolása.
  • HSSFWorkbook: Az XLS fájl osztályábrázolása.
  • lap: Az XSSFSheet és a HSSFSheet osztályok valósítják meg ezt az interfészt.
  • XSSFSheet: Egy osztály, amely egy XLSX fájlban lévő lapot képvisel.
  • HSSFS-lap: Egy osztály, amely egy XLS-fájlban lévő lapot képvisel.
  • Sor: Az XSSFRow és a HSSFRow osztályok valósítják meg ezt az interfészt.
  • XSSFRrow: Egy osztály az XLSX fájl lapjának egy sorát jelöli.
  • HSSFRow: Egy osztály, amely egy sort képvisel az XLS fájl lapján.
  • Sejt: Az XSSFCell és a HSSFCell osztályok valósítják meg ezt az interfészt.
  • XSSFCell: Egy osztály, amely egy XLSX fájl sorában lévő cellát képvisel.
  • HSSFCell: Egy osztály, amely egy XLS-fájl sorában lévő cellát képvisel.

Olvasás/írás művelet

Példánkban az alábbiakban az adott Excel fájlformátumot vesszük figyelembe

Ír olvas OperaCIÓ

Adatok olvasása Excel fájlból

Teljes példa: Itt az Excelből próbálunk adatokat beolvasni 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");

    }

}

Megjegyzés: Nem használjuk a Testng keret itt. Futtassa az osztályt mint Java Az Excel beolvasási funkciót használó alkalmazás Selenium ahogy a fenti példában látható.

Adatok olvasása Excel fájlból

Írjon adatokat Excel fájlba

Teljes példa: Itt megpróbálunk adatokat írni Excel fájlból új sor hozzáadásával az Excel fájlba

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

    }

}

Írjon adatokat Excel fájlba

Excel-manipuláció a JXL API-val

Excel-manipuláció JXL API használatával

A JXL egy másik híres jar az Excel-fájlok olvasásához Java és fájlok írása. Manapság a legtöbb projektben a POI-t használják, de a POI előtt csak a JXL Java API Excel manipulációhoz. Ez egy nagyon kicsi és egyszerű API az Excel beolvasásához Selenium.

TIPP: Azt javaslom, hogy ne használjuk a JXL-t semmilyen új projektben, mert a könyvtár 2010-től nincs aktív fejlesztés alatt, és a POI API-hoz képest hiányzik a funkció.

JXL letöltése:

Ha a JXL-lel szeretne dolgozni, letöltheti erről a linkről

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

Excel-manipuláció JXL API használatával

Demópéldát is kaphat ebben a tömörített JXL fájlban.

Néhány szolgáltatás:

  • A JXL képes beolvasni az Excel fájlokat Selenium 95, 97, 2000, XP, 2003 munkafüzethez.
  • Angol, francia, spanyol, német nyelven tudunk dolgozni.
  • A diagram és a kép beszúrása Excelben lehetséges

Hátrány:

  • Csak Excel 97 és újabb verziókat tudunk írni (az Excel 95-ben való írás nem támogatott).
  • A JXL nem támogatja az excel fájl XLSX formátumát.
  • Táblázatot generál Excel 2000 formátumban.

Összegzésként

  • Az Excel fájlt olvashatja Java IO működés. Ehhez használnunk kell Apache POI Jar.
  • Az Excel fájlban kétféle munkafüzet létezik, XLSX és a XLS fájlokat.
  • A POI-nak különböző interfészei vannak: munkafüzet, lap, sor, cella.
  • Ezeket az interfészek megfelelő módon valósítják meg XLS (HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell) És XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) fájlkezelési osztályok.
  • A JXL egy másik API az Excel kezeléséhez Selenium.
  • A JXL nem működik az Excel XLSX formátumával.