Як читати/записувати дані з файлу Excel: Selenium POI

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

Java надає нам різні класи для роботи з файлами Selenium. У цьому підручнику ми навчимося читати та писати далі перевершувати файл за допомогою 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 jar з http://poi.apache.org/download.html & завантажити найновіший файл zip

Обробка файлу Excel за допомогою POI

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

Обробка файлу Excel за допомогою POI

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

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

Нижче наведено список різних Java Інтерфейси та класи в POI для читання XLS та XLSX файл-

  • робочий зошит: класи 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 Програма, яка використовує функцію читання в Excel 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 також є ще одним відомим jar для читання файлу 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 не підтримує формат файлу Excel XLSX.
  • Він створює електронну таблицю у форматі Excel 2000.

Підсумки

  • Файл Excel можна прочитати Java Операція IO. Для цього нам потрібно використовувати Apache POI Jar.
  • Є два типи робочої книги у файлі Excel, XLSX та XLS файли.
  • POI має різні інтерфейси Workbook, Sheet, Row, Cell.
  • Ці інтерфейси реалізовані відповідними XLS (HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell) і XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) класи роботи з файлами.
  • JXL — ще один API для роботи з Excel Selenium.
  • JXL не може працювати з форматом XLSX Excel.