Как да четете/записвате данни от Excel файл: Selenium POI

File IO е критична част от всеки софтуерен процес. Често създаваме файл, отваряме го и актуализираме нещо или го изтриваме в нашите компютри. Същото е положението и с Selenium Автоматизация. Имаме нужда от процес, с който да манипулираме файлове Selenium.

Java ни предоставя различни класове за манипулиране на файлове с Selenium. В този урок ще научим как можем да четем и пишем Excel файл с помощта на Java IO пакет и Apache POI библиотека.

Apache POI в Selenium

- Apache POI в Selenium е широко използван API за тестване, управлявано от данни със селен. Това е POI библиотека, написана на Java който дава на потребителите API за манипулиране Microsoft документи като .xls и .xlsx. Потребителите могат лесно да създават, модифицират и четат/записват в excel файлове. POI означава „лошо внедряване на обфускация“.

Експортиране на Excel

Как да обработвам excel файл с помощта на POI (Maven POM зависимост)

Работете с Excel файл с помощта на POI

За четене и запис на Excel файл Java, Apache предоставя много известна библиотека POI. Тази библиотека е достатъчно способна да чете и пише и двете XLS намлява XLSX файлов формат на Excel.

Чета XLS файлове, ан HSSF изпълнението се осигурява от POI библиотека.

Чета XLSX, XSSF изпълнение на POI библиотека ще бъде изборът. Нека проучим тези реализации в детайли.

Ако използвате Maven във вашия проект, зависимостта на Maven ще бъде

Работете с Excel файл с помощта на POI

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

Или можете просто да изтеглите най-новата версия на POI буркани от http://poi.apache.org/download.html & изтеглете най-новия zip файл

Работете с Excel файл с помощта на POI

Когато изтеглите zip файла за този буркан, трябва да го разархивирате и да добавите всички тези буркани към пътя на класа на вашия проект.

Работете с Excel файл с помощта на POI

Класове и интерфейси в POI

Класове и интерфейси в Apache POI
Класове и интерфейси в Apache POI

Следва списък с различни Java Интерфейси и класове в POI за четене XLS намлява XLSX филе-

  • Workbook: Класовете XSSFWorkbook и HSSFWorkbook прилагат този интерфейс.
  • XSSF Работна книга: представлява класово представяне на XLSX файл.
  • HSSF Работна тетрадка: представлява класово представяне на XLS файл.
  • Лист: Класовете XSSFSheet и HSSFSheet реализират този интерфейс.
  • XSSFSsheet: е клас, представляващ лист в XLSX файл.
  • HSSFSsheet: е клас, представляващ лист в XLS файл.
  • Ред: Класовете XSSFRow и HSSFRow реализират този интерфейс.
  • XSSFRow: е клас, представляващ ред в листа на XLSX файл.
  • HSSFRow: е клас, представляващ ред в листа на XLS файл.
  • Клетка: Класовете XSSFCell и HSSFCell реализират този интерфейс.
  • XSSFCell: е клас, представляващ клетка в ред от XLSX файл.
  • HSSFCell: Е клас, представляващ клетка в ред от XLS файл.

Операция за четене/запис

За нашия пример ще разгледаме дадения по-долу файлов формат на Excel

Чети пиши OperaАЦИ

Прочетете данни от Excel файл

Пълен пример: Тук се опитваме да прочетем данни от Excel в 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");

    }

}

Забележка: Ние не използваме Testng рамка тук. Изпълнете класа като Java Приложение, използващо функцията read excel in Selenium както е показано в горния пример.

Прочетете данни от Excel файл

Запишете данни в Excel файл

Пълен пример: Тук се опитваме да запишем данни от Excel файл, като добавим нов ред в 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);

    }

}

Запишете данни в Excel файл

Манипулиране на Excel с помощта на JXL API

Манипулиране на Excel чрез JXL API

JXL също е друг известен буркан за четене на Excel файл Java и писане на файлове. В наши дни POI се използва в повечето проекти, но преди POI беше само JXL Java API за манипулиране на Excel. Това е много малък и прост API за четене на Excel Selenium.

СЪВЕТИ: Моето предложение е да не използвате JXL в нито един нов проект, защото библиотеката не е в активно развитие от 2010 г. и липсва функцията в сравнение с POI API.

Изтеглете JXL:

Ако искате да работите с JXL, можете да го изтеглите от тази връзка

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

Манипулиране на Excel чрез JXL API

Можете също да получите демонстрационен пример в този компресиран файл за JXL.

Някои от функциите:

  • JXL може да чете Excel файл в Selenium за 95, 97, 2000, XP, 2003 работна книга.
  • Можем да работим с английски, френски, испански, немски.
  • Възможно е копиране на диаграма и вмъкване на изображение в Excel

Недостатък:

  • Можем да пишем само в Excel 97 и по-нови версии (писането в Excel 95 не се поддържа).
  • JXL не поддържа XLSX формат на excel файл.
  • Той генерира електронна таблица във формат Excel 2000.

Oбобщение

  • Excel файлът може да се чете от Java IO операция. За това трябва да използваме Apache POI Jar.
  • Има два вида работна книга във файл на Excel, XLSX намлява XLS файлове.
  • POI има различни интерфейси Workbook, Sheet, Row, Cell.
  • Тези интерфейси се реализират чрез съответстващи XLS (HSSFWorkbook, HSSFSsheet, HSSFRow, HSSFCell) И XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) класове за манипулиране на файлове.
  • JXL е друг API за работа с Excel Selenium.
  • JXL не може да работи с XLSX формат на excel.