Τρόπος ανάγνωσης/εγγραφής δεδομένων από αρχείο 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 Java, το Apache παρέχει ένα πολύ διάσημο POI βιβλιοθήκης. Αυτή η βιβλιοθήκη είναι αρκετά ικανή να διαβάζει και να γράφει και τα δύο XLS και XLSX μορφή αρχείου του Excel.
Να διαβασω XLS αρχεία, an HSSF Η υλοποίηση παρέχεται από τη βιβλιοθήκη POI.
Να διαβασω XLSX, XSSF εφαρμογή του POI βιβλιοθήκη θα είναι η επιλογή. Ας μελετήσουμε λεπτομερώς αυτές τις υλοποιήσεις.
Εάν χρησιμοποιείτε το Maven στο έργο σας, η εξάρτηση Maven θα είναι
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
Ή μπορείτε απλά να κάνετε λήψη της πιο πρόσφατης έκδοσης δοχείων POI από http://poi.apache.org/download.html & κατεβάστε το πιο πρόσφατο αρχείο zip
Όταν κάνετε λήψη του αρχείου zip για αυτό το βάζο, πρέπει να το αποσυμπιέσετε και να προσθέσετε όλα αυτά τα βάζα στη διαδρομή κλάσης του έργου σας.
Κλάσεις και διεπαφές σε 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
Ανάγνωση δεδομένων από το αρχείο 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
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 είναι επίσης ένα άλλο διάσημο βάζο για ανάγνωση αρχείου 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/
Μπορείτε επίσης να λάβετε παράδειγμα επίδειξης μέσα σε αυτό το συμπιεσμένο αρχείο για 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.