Τρόπος ανάγνωσης/εγγραφής δεδομένων από αρχείο Excel: Selenium POI

Το αρχείο IO είναι ένα κρίσιμο μέρος οποιασδήποτε διαδικασίας λογισμικού. Συχνά δημιουργούμε ένα αρχείο, το ανοίγουμε και ενημερώνουμε κάτι ή το διαγράφουμε στους Υπολογιστές μας. Το ίδιο συμβαίνει και με Selenium Αυτοματοποίηση. Χρειαζόμαστε μια διαδικασία για να χειριζόμαστε αρχεία Selenium.

Java μας παρέχει διαφορετικές κλάσεις για χειρισμό αρχείων με Selenium. Σε αυτό το σεμινάριο, θα μάθουμε πώς μπορούμε να διαβάζουμε και να γράφουμε Excel αρχείο με τη βοήθεια του 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 αρχεία, an 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 από http://poi.apache.org/download.html & κατεβάστε το πιο πρόσφατο αρχείο zip

Χειριστείτε το αρχείο Excel χρησιμοποιώντας POI

Όταν κάνετε λήψη του αρχείου zip για αυτό το βάζο, πρέπει να το αποσυμπιέσετε και να προσθέσετε όλα αυτά τα βάζα στη διαδρομή κλάσης του έργου σας.

Χειριστείτε το αρχείο Excel χρησιμοποιώντας POI

Κλάσεις και διεπαφές σε POI

Κλάσεις και διεπαφές στο Apache POI
Κλάσεις και διεπαφές στο Apache POI

Ακολουθεί μια λίστα με διαφορετικά Java Διεπαφές και τάξεις σε POI για ανάγνωση XLS και XLSX φιλέτο-

  • Βιβλίο εργασίας: Οι κλάσεις XSSFWorkbook και HSSFWorkbook υλοποιούν αυτήν τη διεπαφή.
  • XSSFWorkbook: Είναι μια αναπαράσταση κλάσης του αρχείου XLSX.
  • Βιβλίο εργασίας HSSF: Είναι μια αναπαράσταση κλάσης του αρχείου XLS.
  • Φύλλο: Οι κλάσεις XSSFSheet και HSSFSheet υλοποιούν αυτήν τη διεπαφή.
  • Φύλλο XSSF: Είναι μια κλάση που αντιπροσωπεύει ένα φύλλο σε ένα αρχείο XLSX.
  • Φύλλο HSSF: Είναι μια κλάση που αντιπροσωπεύει ένα φύλλο σε ένα αρχείο XLS.
  • Σειρά: Οι κλάσεις XSSFRow και HSSFRow υλοποιούν αυτήν τη διεπαφή.
  • XSSFRow: Είναι μια κλάση που αντιπροσωπεύει μια σειρά στο φύλλο του αρχείου XLSX.
  • HSSFRow: Είναι μια κλάση που αντιπροσωπεύει μια σειρά στο φύλλο του αρχείου XLS.
  • Κύτταρο: Οι κλάσεις XSSFCell και HSSFCell υλοποιούν αυτήν τη διεπαφή.
  • XSSFCell: Είναι μια κλάση που αντιπροσωπεύει ένα κελί σε μια σειρά αρχείου XLSX.
  • HSSFCcell: Είναι μια κλάση που αντιπροσωπεύει ένα κελί σε μια σειρά αρχείου 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 in 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 είναι επίσης ένα άλλο διάσημο βάζο για ανάγνωση αρχείου 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 δεν υποστηρίζει τη μορφή XLSX του αρχείου excel.
  • Δημιουργεί υπολογιστικό φύλλο σε μορφή Excel 2000.

Σύνοψη

  • Το αρχείο Excel μπορεί να διαβαστεί από Java Λειτουργία IO. Για αυτό, πρέπει να χρησιμοποιήσουμε Apache POI Jar.
  • Υπάρχουν δύο είδη βιβλίου εργασίας στο αρχείο Excel, XLSX και XLS αρχεία.
  • Το POI έχει διαφορετικές διεπαφές Βιβλίο εργασίας, φύλλο, σειρά, κελί.
  • Αυτές οι διεπαφές υλοποιούνται από αντίστοιχες XLS (HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell) Και XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) τάξεις χειρισμού αρχείων.
  • Το JXL είναι ένα άλλο API για χειρισμό του Excel Selenium.
  • Το JXL δεν μπορεί να λειτουργήσει με τη μορφή XLSX του excel.