IO tệp 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 lớp 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.
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”.
- Cách xử lý tệp excel bằng POI (Maven POM Dependency)
- Lớp học và Giao diện trong POI
- Thao tác đọc / ghi
- Đọc dữ liệu từ tệp Excel
- Ghi dữ liệu trên tệp Excel
- Thao tác Excel bằng API JXL
Xuất Excel
Cách xử lý tệp excel bằng POI (Maven POM Dependency)
Để Đọc và Ghi tệp Excel bằng 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 dự án của mình, sự phụ thuộc của Maven sẽ là
org.apache.poi poi 4.1.1
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 lớp của dự án của bạn.
Lớp và Giao diện trong POI:

Sau đây là một danh sách khác nhau giao diện Java và các lớp trong POI để đọc XLS và XLSX File-
- Workbook : Các lớp XSSFWorkbook và HSSFWorkbook triển khai giao diện này.
- XSSFWorkbook : Là một đại diện lớp của tệp XLSX.
- HSSFWorkbook : Là một đại diện lớp của tệp XLS.
- Trang tính : Các lớp XSSFSheet và HSSFSheet triển khai giao diện này.
- XSSFSheet : Là một lớp đại diện cho một trang tính trong tệp XLSX.
- HSSFSheet : Là một lớp đại diện cho một trang tính trong tệp XLS.
- Hàng : Các lớp XSSFRow và HSSFRow triển khai giao diện này.
- XSSFRow : Là một lớp đại diện cho một hàng trong trang tính của tệp XLSX.
- HSSFRow : Là một lớp đại diện cho một hàng trong trang tính của tệp XLS.
- Các lớp Cell : XSSFCell và HSSFCell thực hiện giao diện này.
- XSSFCell : Là một lớp đại diện cho một ô trong một hàng của tệp XLSX.
- HSSFCell: Là một lớp đại diện cho một ô trong một hàng 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:
gói excelExportAndFileIO;nhập java.io.File;nhập java.io.FileInputStream;nhập java.io.IOException;nhập org.apache.poi.hssf.usermodel.HSSFWorkbook;nhập org.apache.poi.ss.usermodel.Row;nhập org.apache.poi.ss.usermodel.Sheet;nhập org.apache.poi.ss.usermodel.Workbook;nhập org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) ném IOException {// Tạo một đối tượng của lớp Tệp để mở tệp xlsxFile file = new File (filePath + "\\" + fileName);// Tạo một đối tượng thuộc lớp FileInputStream để đọc tệp excelFileInputStream inputStream = new FileInputStream (tệp);Workbook guru99Workbook = null;// Tìm phần mở rộng tệp bằng cách tách tên tệp thành chuỗi con và chỉ nhận tên phần mở rộngString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Kiểm tra điều kiện xem tệp có phải là tệp xlsx khôngif (fileExtensionName.equals (". xlsx")) {// Nếu là tệp xlsx thì hãy tạo đối tượng của lớp XSSFWorkbookguru99Workbook = new XSSFWorkbook (inputStream);}// Kiểm tra điều kiện nếu tệp là tệp xlselse if (fileExtensionName.equals (". xls")) {// Nếu là tệp xls thì hãy tạo đối tượng của lớp HSSFWorkbookguru99Workbook = new HSSFWorkbook (inputStream);}// Đọc trang tính bên trong sổ làm việc theo tên của nóTrang tính guru99Sheet = guru99Workbook.getSheet (sheetName);// Tìm số hàng trong tệp excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Tạo một vòng lặp trên tất cả các hàng của tệp excel để đọc nófor (int i = 0; iLưu ý: Chúng tôi không sử dụng khung Testng ở đây. Chạy lớp 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 hàng mới trong tệp Excel
gói excelExportAndFileIO;nhập java.io.File;nhập java.io.FileInputStream;nhập java.io.FileOutputStream;nhập java.io.IOException;nhập org.apache.poi.hssf.usermodel.HSSFWorkbook;nhập org.apache.poi.ss.usermodel.Cell;nhập org.apache.poi.ss.usermodel.Row;nhập org.apache.poi.ss.usermodel.Sheet;nhập org.apache.poi.ss.usermodel.Workbook;nhập org.apache.poi.xssf.usermodel.XSSFWorkbook;public class WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) ném IOException {// Tạo một đối tượng của lớp Tệp để mở tệp xlsxFile file = new File (filePath + "\\" + fileName);// Tạo một đối tượng thuộc lớp FileInputStream để đọc tệp excelFileInputStream inputStream = new FileInputStream (tệp);Workbook guru99Workbook = null;// Tìm phần mở rộng tệp bằng cách tách tên tệp thành chuỗi con và chỉ nhận tên phần mở rộngString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Kiểm tra điều kiện xem tệp có phải là tệp xlsx khôngif (fileExtensionName.equals (". xlsx")) {// Nếu là tệp xlsx thì hãy tạo đối tượng của lớp XSSFWorkbookguru99Workbook = new XSSFWorkbook (inputStream);}// Kiểm tra điều kiện nếu tệp là tệp xlselse if (fileExtensionName.equals (". xls")) {// Nếu là tệp xls thì hãy tạo đối tượng của lớp XSSFWorkbookguru99Workbook = new HSSFWorkbook (inputStream);}// Đọc trang tính excel theo tên trang tínhTrang tính sheet = guru99Workbook.getSheet (sheetName);// Lấy số hàng hiện tại trong tệp excelint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Lấy hàng đầu tiên từ trang tínhHàng hàng = sheet.getRow (0);// Tạo một hàng mới và nối nó vào cuối trang tínhHàng newRow = sheet.createRow (rowCount + 1);// Tạo vòng lặp trên ô của Hàng mới tạofor (int j = 0; j
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 dự án, nhưng trước POI, JXL chỉ là API Java để thao tác với 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ỳ dự án 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.
Tóm lược:
- 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 lớp 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.