Як читати/записувати дані Excel у Selenium Використання Apache POI
⚡ Розумний підсумок
Диск для файлів Excel Selenium тести на основі даних, а Apache POI – це Java бібліотека, яка їх читає та записує. У розділах нижче розглядаються залежності, основні класи, приклади читання та запису, а також JXL.
Файловий IO є важливою частиною будь-якого програмного процесу. Ми часто створюємо файл, відкриваємо його та щось оновлюємо або видаляємо на своїх комп’ютерах. Те ж саме у випадку з Selenium автоматизація. Нам потрібен процес для роботи з файлами Selenium.
Java надає нам різні класи для роботи з файлами Selenium. У цьому підручнику ми навчимося читати та писати далі перевершувати файл за допомогою Java Пакет IO і Apache Бібліотека POI.
Apache POI в Selenium
Команда Apache POI в Selenium є широко використовуваним API для Selenium тестування на основі данихЦе бібліотека POI, написана мовою Java який надає користувачам API для маніпулювання Microsoft документи, такі як .xls та .xlsx. Користувачі можуть легко створювати, змінювати та читати/записувати у файли Excel. POI розшифровується як «Погана реалізація обфускації» (Poor Obfuscation Implementation).
Як обробити файл Excel за допомогою POI (залежність Maven POM)
Посилання на POI Selenium тест до робочого зошита нижче.
Для читання та запису файлу Excel JavaApache надає дуже відому бібліотеку POI. Ця бібліотека достатньо здатна читати та записувати файли Excel у форматі XLS та XLSX.
Для читання XLS-файлів бібліотека POI забезпечує реалізацію HSSF.
Для читання XLSX, реалізація бібліотеки POI у форматі XSSF буде вибором. Давайте детально розглянемо ці реалізації.
Якщо ви використовуєте Maven у своєму проєкті, залежність Maven буде додано до pom.xml, як показано нижче.
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
Примітка до версії: 4.1.1 – це оригінальний приклад; поточні проекти оголошують poi-ooxml 5.5.1, який потрібен для XLSX.
Або ви можете просто завантажити останню версію POI jar з http://poi.apache.org/download.html & завантажити найновіший файл zip
Коли ви завантажуєте zip-файл для цього jar, вам потрібно розархівувати його та додати всі jar-файли до шляху класу вашого проекту.
Класи та інтерфейси в POI
Нижче наведено список різних Java Інтерфейси та класи в POI для читання файлів XLS та XLSX, показані нижче -
- Книга: Класи XSSFWorkbook та HSSFWorkbook реалізують цей інтерфейс.
- XSSFРобочий зошит: Є класовим представленням XLSX-файлу.
- Робочий зошит HSSF: Є класовим представленням XLS-файлу.
- Лист: Класи XSSFSheet та HSSFSheet реалізують цей інтерфейс.
- XSSFАркуш: Клас, що представляє аркуш у файлі XLSX.
- Аркуш HSSF: Це клас, що представляє аркуш у XLS-файлі.
- Рядок: Класи XSSFRow та HSSFRow реалізують цей інтерфейс.
- XSSFrow: Це клас, що представляє рядок у аркуші XLSX-файлу.
- HSSFRow: Це клас, що представляє рядок у аркуші XLS-файлу.
- стільниковий: Класи XSSFCell та HSSFCell реалізують цей інтерфейс.
- XSSFCell: Це клас, що представляє комірку в рядку XLSX-файлу.
- HSSFCell: Це клас, що представляє комірку в рядку файлу XLS.
Читати писати Operaції
Для нашого прикладу ми розглянемо наведений нижче формат файлу Excel
Читання даних із файлу 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.
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 за допомогою JXL API
JXL також є ще одним відомим jar для читання файлу Excel Java і запис файлів. Зараз POI використовується в більшості проектів, але до POI використовувався лише JXL Java API для роботи з Excel. Це дуже маленький і простий API для читання в Excel Selenium.
ПОРАДИ: Моя пропозиція — не використовувати JXL у жодному новому проекті, оскільки бібліотека не перебуває в активній розробці з 2010 року — 2.6.12 все ще є її останньою версією — і в ній бракує цієї функції порівняно з POI API.
Завантажити JXL:
Якщо ви хочете працювати з JXL, ви можете завантажити його за цим посиланням
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Ви також можете отримати демонстраційний приклад у цьому zip-файлі для JXL, як у випадку з extracнаведено нижче.
Деякі функції:
- JXL може читати файл Excel Selenium для 95, 97, 2000, XP, 2003 робочий зошит.
- Ми можемо працювати з англійською, французькою, іспанською, німецькою мовами.
- Можливе копіювання діаграми та вставка зображення в Excel
Недолік:
- Ми можемо писати лише Excel 97 і новіші версії (запис у Excel 95 не підтримується).
- JXL не підтримує формат файлу Excel XLSX.
- Він створює електронну таблицю у форматі Excel 2000.










