Учебники

34) Excel в селене

File IO является важной частью любого программного процесса. Мы часто создаем файл, открываем и обновляем что-либо или удаляем его на наших компьютерах. То же самое в случае с Selenium Automation. Нам нужен процесс для манипулирования файлами с помощью Selenium.

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

Экспорт в Excel

Как работать с файлом Excel с помощью POI (Maven POM Dependency)

Чтение и запись данных из файла Excel в веб-драйвере Selenium: POI & JXL

Для чтения или записи Excel Apache предоставляет очень известную библиотеку POI. Эта библиотека достаточно способна для чтения и записи файлов формата XLS и XLSX в Excel.

Чтобы читать файлы XLS , библиотека POI предоставляет реализацию HSSF .

Чтобы читать XLSX, XSSF реализация библиотеки POI будет выбором. Давайте изучим эти реализации подробно.

Если вы используете Maven в своем проекте, зависимость Maven будет

Чтение и запись данных из файла Excel в веб-драйвере Selenium: POI & JXL

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

Или вы можете просто скачать последнюю версию POI jars с http://poi.apache.org/download.html и скачать последнюю версию zip-файла

Чтение и запись данных из файла Excel в веб-драйвере Selenium: POI & JXL

Когда вы загружаете zip-файл для этого jar-файла, вам нужно распаковать его и добавить все эти jar-файлы в путь классов вашего проекта.

Чтение и запись данных из файла Excel в веб-драйвере Selenium: POI & JXL

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

Чтение и запись данных из файла Excel в веб-драйвере Selenium: POI & JXL

Following is a list of different Java Interfaces and classes in POI for reading XLS and XLSX file-

  • Workbook: XSSFWorkbook and HSSFWorkbook classes implement this interface.
  • XSSFWorkbook: Is a class representation of XLSX file.
  • HSSFWorkbook: Is a class representation of XLS file.
  • Sheet: XSSFSheet and HSSFSheet classes implement this interface.
  • XSSFSheet: Is a class representing a sheet in an XLSX file.
  • HSSFSheet: Is a class representing a sheet in an XLS file.
  • Row: XSSFRow and HSSFRow classes implement this interface.
  • XSSFRow: Is a class representing a row in the sheet of XLSX file.
  • HSSFRow : класс, представляющий строку в листе файла XLS.
  • Cell : классы XSSFCell и HSSFCell реализуют этот интерфейс.
  • XSSFCell : класс, представляющий ячейку в строке файла XLSX.
  • HSSFCell: класс, представляющий ячейку в строке файла XLS.

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

Для нашего примера мы рассмотрим ниже данный формат файла Excel

Чтение и запись данных из файла Excel в веб-драйвере Selenium: POI & JXL

Чтение данных из файла Excel

Полный пример: здесь мы пытаемся прочитать данные из файла Excel

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-приложение

Чтение и запись данных из файла Excel в веб-драйвере Selenium: POI & JXL

Записать данные в файл 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 в веб-драйвере Selenium: POI & JXL

Манипуляция Excel с использованием JXL API

Чтение и запись данных из файла Excel в веб-драйвере Selenium: POI & JXL

JXL — это еще одна известная банка для чтения файлов Excel. Теперь дневная POI используется в большинстве проектов, но до POI JXL был только Java API для работы с Excel. Это очень маленький и простой API.

СОВЕТЫ: Мое предложение — не использовать JXL в каком-либо новом проекте, потому что библиотека не находится в активной разработке с 2010 года и не имеет возможности по сравнению с POI API.

Скачать JXL:

Если вы хотите работать с JXL, вы можете скачать его по этой ссылке

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

Чтение и запись данных из файла Excel в веб-драйвере Selenium: POI & JXL

Вы также можете получить демонстрационный пример внутри этого zip-файла для JXL.

Некоторые из особенностей:

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

недостаток:

  • Мы можем писать только в Excel 97 и более поздних версиях (запись в Excel 95 не поддерживается).
  • JXL не поддерживает XLSX-формат файла Excel.
  • Создает электронную таблицу в формате Excel 2000.

Резюме:

  • Файл Excel можно прочитать с помощью операции ввода-вывода Java. Для этого нам нужно использовать Apache POI Jar .
  • Существует два вида рабочих книг в файле Excel: файлы XLSX и XLS .
  • POI имеет различные интерфейсы Workbook, Sheet, Row, Cell.
  • Эти интерфейсы реализуются соответствующими классами манипулирования файлами XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) и XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ).
  • JXL — это еще один API для манипулирования Excel.
  • JXL не может работать с форматом Excel XLSX.