Cách đọc/ghi dữ liệu từ file 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 nội dung nào đó hoặc xóa nó trong Máy tính của mình. Trường hợp tương tự với Selenium Tự động hóa. Chúng ta cần một quy trình để thao tác với các tập tin Selenium.

Java cung cấp cho chúng ta các lớp khác nhau để Thao tác với 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à viết trên Excel nộp hồ sơ với sự giúp đỡ của Java Gói IO và Apache Thư viện POI.

POI của Apache trong Selenium

POI của Apache trong Selenium là một API được sử dụng rộng rãi để thử nghiệm dữ liệu selenium. Đây 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 Microsoft các tài liệu như .xls và .xlsx. Người dùng có thể dễ dàng tạo, sửa đổi và đọc/ghi vào tệp excel. POI là viết tắt của “Triển khai che giấu kém”.

Xuất Excel

Cách xử lý tệp excel bằng POI (Phụ thuộc Maven POM)

Xử lý tệp Excel bằng POI

Để đọ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 có đủ khả năng để đọc và viết cả xls XLSX định dạng tập tin của Excel.

Đọc xls tập tin, một HSSF việc triển khai được cung cấp bởi thư viện POI.

Đọc XLSX, XSSF thực hiện POI thư viện sẽ là sự lựa chọn Hãy nghiên cứu những triển khai này một cách chi tiết.

Nếu bạn đang sử dụng Maven trong dự án của mình, phần phụ thuộc Maven sẽ là

Xử lý tệp Excel bằng POI

<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 phiên bản mới nhất của lọ POI từ http://poi.apache.org/download.html & tải xuống tệp zip mới nhất

Xử lý tệp Excel bằng POI

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

Xử lý tệp Excel bằng POI

Các lớp và giao diện trong POI

Các lớp và giao diện trong Apache POI
Các lớp và giao diện trong Apache POI

Sau đây là danh sách các loại khác nhau Java Giao diện và lớp trong POI để đọc xlsXLSX tập tin-

  • Bảng tính: Các lớp XSSFWorkbook và HSSFWorkbook triển khai giao diện này.
  • Sổ tay XSSF: Là biểu diễn lớp của tệp XLSX.
  • Sổ tay HSSF: Là biểu diễn lớp của tệp XLS.
  • Bảng: Các lớp XSSFSheet và HSSFSheet triển khai giao diện này.
  • Bảng XSSF: Là lớp đại diện cho một sheet trong file XLSX.
  • Bảng HSSF: Là lớp đại diện cho một sheet trong file XLS.
  • Row: Các lớp XSSFRow và HSSFRow triển khai giao diện này.
  • XSSFrow: Là lớp đại diện cho một hàng trong sheet của file XLSX.
  • HSSFrow: Là lớp đại diện cho một hàng trong sheet của file XLS.
  • Pin: Các lớp XSSFCell và HSSFCell triển khai giao diện này.
  • XSSFÔ: Là lớp đại diện cho một ô trong một hàng của tệp XLSX.
  • HSSFCell: Là lớp đại diện cho một ô trong một hàng của tệp XLS.

Hoạt động đọc/ghi

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 viết Operasản xuất

Đọc dữ liệu từ file Excel

Ví dụ hoàn chỉnh: Ở đây chúng tôi đang cố gắng đọc dữ liệu từ Excel ở dạng 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 Kiểm tra khuôn khổ ở đây. Chạy lớp như Java Ứng dụng sử dụng chức năng đọc excel trong Selenium như trong ví dụ trên.

Đọc dữ liệu từ tệp Excel

Ghi dữ liệu lên file Excel

Ví dụ hoàn chỉnh: Ở đâ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 vào 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);

    }

}

Ghi dữ liệu lên file Excel

Thao tác Excel bằng API JXL

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 trong Java và ghi tập tin. Ngày nay, POI được sử dụng trong hầu hết các dự án, nhưng trước POI, JXL chỉ được sử dụng Java API cho thao tác Excel. Đây là một API rất nhỏ và đơn giản để đọc excel trong Selenium.

MẸO: Đề 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/

Thao tác Excel bằng API JXL

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 ở dạng 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, tiếng Pháp, tiếng Tây Ban Nha, tiếng Đức.
  • Có thể sao chép biểu đồ và chèn ảnh trong Excel

Hạn chế:

  • Chúng ta 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ổng kết

  • Tập tin Excel có thể được đọc bởi Java Hoạt động IO. Đối với điều đó, chúng ta cần sử dụng Bình POI của Apache.
  • Có hai loại sổ làm việc trong tệp Excel, XLSX xls các tập tin.
  • 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ằng cách tương ứng xls (Sổ làm việc HSSF, Bảng HSSF, HSSFRow, HSSFCell) Và XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) các lớp thao tác tập tin.
  • 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.