Đọc và ghi dữ liệu từ tệp Excel trong Selenium Webdriver: POI & JXL
Cách đọc / ghi dữ liệu từ tệp Excel: Selenium POI
Tệp IO là một phần quan trọng của bất kỳ quy trình phần mềm nào. Chúng tôi thường xuyên tạo một tệp, mở nó và cập nhật một cái gì đó hoặc xóa nó trong Máy tính của chúng tôi. Tương tự là trường hợp của Selenium Automation. Chúng tôi cần một quy trình để thao tác các tệp với Selenium.
Java cung cấp cho chúng ta các Class khác nhau để thao tác tệp với Selenium. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách chúng ta có thể đọc và ghi trên tệp Excel với sự trợ giúp của gói Java IO và thư viện Apache POI.
- 3 Cách làm muối tôm ngon, nhuyễn tại nhà chuẩn vị Tây Ninh
- Single Mom là gì? Những điều bạn có thể chưa biết về single mom
- Nhạc phim 11 tháng 5 ngày là gì?
- Đoạn văn phân tích khổ 1 bài Đoàn thuyền đánh cá
- Anti backpack day là gì? Đọc ngay đúng nhất
Apache POI trong Selenium
Các Apache POI trong Selenium là một API được sử dụng rộng rãi cho các dữ liệu selen điều khiển thử nghiệm. Nó là một thư viện POI được viết bằng Java cung cấp cho người dùng một API để thao tác với các tài liệu Microsoft như .xls và .xlsx. Người dùng có thể dễ dàng tạo, sửa đổi và đọc / ghi vào các tệp excel. POI là từ viết tắt của “Poor Obfuscation Exhibition”.
Xuất Excel
Cách xử lý tệp excel bằng POI (Maven POM Dependency)

Để Đọc và Ghi tệp Excel trong Java, Apache cung cấp một thư viện POI rất nổi tiếng. Thư viện này đủ khả năng để đọc và ghi cả định dạng tệp XLS và XLSX của Excel.
Để đọc các tệp XLS , một triển khai HSSF được cung cấp bởi thư viện POI.
Để đọc XLSX, việc triển khai XSSF của thư viện POI sẽ là lựa chọn. Hãy nghiên cứu chi tiết các triển khai này.
Nếu bạn đang sử dụng Maven trong project của mình, sự phụ thuộc của Maven sẽ là

<dependency>
<groupId> org.apache.poi </groupId>
<artifactId> poi </artifactId>
<version> 4.1.1 </version>
</dependency>
Hoặc bạn có thể chỉ cần tải xuống bình POI phiên bản mới nhất từ http://poi.apache.org/download.html và tải xuống tệp zip mới nhất

Khi bạn tải xuống tệp zip cho jar này, bạn cần giải nén nó và thêm tất cả các lọ này vào đường dẫn Class của project của bạn.

Class và Giao diện trong POI:

Class và Giao diện trong Apache POI
Sau đây là một danh sách khác nhau giao diện Java và các Class trong POI để đọc XLS và XLSX File-
- Workbook : Các Class XSSFWorkbook và HSSFWorkbook triển khai giao diện này.
- XSSFWorkbook : Là một đại diện Class của tệp XLSX.
- HSSFWorkbook : Là một đại diện Class của tệp XLS.
- Sheet : Các Class XSSFSheet và HSSFSheet triển khai giao diện này.
- XSSFSheet : Là một Class đại diện cho một Sheet trong tệp XLSX.
- HSSFSheet : Là một Class đại diện cho một Sheet trong tệp XLS.
- row : Các Class XSSFRow và HSSFRow triển khai giao diện này.
- XSSFRow : Là một Class đại diện cho một row trong Sheet của tệp XLSX.
- HSSFRow : Là một Class đại diện cho một row trong Sheet của tệp XLS.
- Các Class Cell : XSSFCell và HSSFCell thực hiện giao diện này.
- XSSFCell : Là một Class đại diện cho một ô trong một row của tệp XLSX.
- HSSFCell: Là một Class đại diện cho một ô trong một row của tệp XLS.
Thao tác đọc / ghi-
Đối với ví dụ của chúng tôi, chúng tôi sẽ xem xét định dạng tệp Excel dưới đây

Đọc dữ liệu từ tệp Excel
Ví dụ hoàn chỉnh: Ở đây chúng tôi đang cố gắng đọc dữ liệu từ Excel trong 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”);
}
}
Lưu ý: Chúng tôi không sử dụng khung Testng ở đây. Chạy Class dưới dạng Ứng dụng Java bằng cách sử dụng hàm đọc excel trong Selenium như trong ví dụ trên.

Ghi dữ liệu trên tệp Excel
Hoàn thành Ví dụ: Ở đây chúng tôi đang cố gắng ghi dữ liệu từ tệp Excel bằng cách thêm row mới trong tệp 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);
}
}

Thao tác Excel bằng API JXL
JXL cũng là một jar nổi tiếng khác để đọc tệp Excel bằng Java và viết tệp. Ngày nay, POI được sử dụng trong hầu hết các project, nhưng trước POI, JXL chỉ là API Java để thao tác Excel. Nó là một API rất nhỏ và đơn giản để đọc excel trong Selenium.
LỜI KHUYÊN: Đề xuất của tôi là không sử dụng JXL trong bất kỳ project mới nào vì thư viện không được phát triển tích cực từ năm 2010 và thiếu tính năng so với API POI.
Tải xuống JXL:
Nếu bạn muốn làm việc với JXL, bạn có thể tải xuống từ liên kết này
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/

Bạn cũng có thể lấy ví dụ demo bên trong tệp nén này cho JXL.
Một số tính năng:
- JXL có thể đọc tệp Excel trong Selenium cho sổ làm việc 95, 97, 2000, XP, 2003.
- Chúng tôi có thể làm việc với tiếng Anh, Pháp, Tây Ban Nha, Đức.
- Có thể sao chép Biểu đồ và chèn hình ảnh trong Excel
Hạn chế:
- Chúng tôi chỉ có thể viết Excel 97 trở lên (không hỗ trợ viết trong Excel 95).
- JXL không hỗ trợ định dạng XLSX của tệp excel.
- Nó tạo bảng tính ở định dạng Excel 2000.
Bản tóm tắt:
- Tệp Excel có thể được đọc bằng hoạt động Java IO. Để làm được điều đó, chúng ta cần sử dụng Apache POI Jar .
- Có hai loại sổ làm việc trong tệp Excel, tệp XLSX và XLS .
- POI có các Giao diện Workbook, Sheet, Row, Cell khác nhau.
- Các giao diện này được thực hiện bởi các Class thao tác tệp XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) và XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ) tương ứng.
- JXL là một API khác để xử lý Excel trong Selenium.
- JXL không thể hoạt động với định dạng XLSX của excel.