Kuidas Exceli andmeid lugeda/kirjutada Selenium Apache POI kasutamine
⚡ Nutikas kokkuvõte
Exceli failide draiv Selenium andmepõhised testid ja Apache POI on Java teek, mis neid loeb ja kirjutab. Allolevad jaotised käsitlevad sõltuvust, põhiklasse, lugemise ja kirjutamise näiteid ning JXL-i.

Faili IO on mis tahes tarkvaraprotsessi oluline osa. Loome sageli faili, avame selle ja värskendame midagi või kustutame selle oma arvutitest. Sama lugu on Selenium Automatiseerimine. Vajame failidega manipuleerimiseks protsessi Selenium.
Java pakub meile failiga manipuleerimiseks erinevaid klasse Selenium. Selles õpetuses õpime, kuidas saame edasi lugeda ja kirjutada Excel faili abiga Java IO pakett ja Apache POI raamatukogu.
Apache POI sisse Selenium
. Apache POI sisse Selenium on laialdaselt kasutatav API Selenium andmepõhine testimineSee on POI-teek, mis on kirjutatud ... keeles. Java mis annab kasutajatele manipuleerimiseks API Microsoft dokumente nagu .xls ja .xlsx. Kasutajad saavad Exceli faile hõlpsalt luua, muuta ning lugeda ja kirjutada. POI tähistab „kehva hägustamise rakendamist“ (Poor Obfuscation Implementation).
Kuidas hallata Exceli faili POI abil (Maven POM sõltuvus)
Huvipunktide lingid a Selenium test alloleva töövihikuga.
Exceli faili lugemiseks ja kirjutamiseks JavaApache pakub väga kuulsat teeki POI. See teek on piisavalt võimeline lugema ja kirjutama nii Exceli XLS- kui ka XLSX-vormingus faile.
XLS-failide lugemiseks pakub POI teek HSSF-i implementatsiooni.
XLSX-i lugemiseks on parim valik POI teegi XSSF implementatsioon. Uurime neid implementatsioone lähemalt.
Kui kasutate oma projektis Mavenit, lisatakse Maveni sõltuvus pom.xml-i, nagu allpool näidatud.
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
Versiooni märkus: 4.1.1 on algne näide; käimasolevad projektid deklareerivad poi-ooxml 5.5.1, mis on XLSX-i jaoks vajalik.
Või võite lihtsalt alla laadida veebilehelt POI purkide uusima versiooni http://poi.apache.org/download.html & laadige alla uusim ZIP-fail
Kui laadite alla selle purgi ZIP-faili, peate selle lahti pakkima ja lisama need kõik purgid oma projekti klassiteele.
POI klassid ja liidesed
Järgnevalt on nimekiri erinevatest Java XLS- ja XLSX-failide lugemiseks mõeldud POI liidesed ja klassid on näidatud allpool.
- Tööraamat: XSSFWorkbook ja HSSFWorkbook klassid rakendavad seda liidest.
- XSSF-töövihik: On XLSX-faili klassiesituse.
- HSSF-i töövihik: On XLS-faili klassiesituse.
- Leht: XSSFSheet ja HSSFSheet klassid rakendavad seda liidest.
- XSSFSheet: Kas klass esindab XLSX-failis olevat lehte.
- HSSFS-leht: Kas klass esindab XLS-failis olevat lehte.
- Rida: XSSFRow ja HSSFRow klassid rakendavad seda liidest.
- XSSFRow: Kas klass, mis esindab rida XLSX-faili lehel.
- HSSFRow: Kas klass, mis esindab rida XLS-faili lehel.
- Cell: XSSFCell ja HSSFCell klassid rakendavad seda liidest.
- XSSFCell: Kas klass esindab XLSX-faili reas lahtrit.
- HSSFCell: Kas klass, mis esindab XLS-faili rea lahtrit.
Lugema kirjutama Operamine
Meie näite puhul käsitleme allpool antud Exceli failivormingut
Lugege andmeid Exceli failist
Täielik näide: Siin proovime Excelist andmeid lugeda 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"); } }
Märge: Me ei kasuta TestNG raamistik siin. Käivitage klass kui Java Rakendus, mis kasutab funktsiooni Loe Excel sisse Selenium nagu on näidatud ülaltoodud näites.
Seejärel prindib konsool iga rea lahtri haaval.
Kirjutage andmed Exceli faili
Täielik näide: Siin proovime Exceli failist andmeid kirjutada, lisades Exceli faili uue rea.
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); } }
Seejärel kannab töövihik lisatud rida.
Exceli manipuleerimine JXL API abil
JXL on ka teine kuulus purk Exceli faili lugemiseks Java ja failide kirjutamine. Tänapäeval kasutatakse POI-d enamikes projektides, kuid enne POI-d oli ainult JXL Java API Exceli manipuleerimiseks. See on väga väike ja lihtne API Exceli lugemiseks Selenium.
NÕUANDED: Minu soovitus on mitte kasutada JXL-i üheski uues projektis, kuna see teek pole alates 2010. aastast aktiivses arenduses – 2.6.12 on endiselt selle uusim versioon – ja see funktsioon puudub võrreldes POI API-ga.
Laadige alla JXL:
Kui soovite töötada JXL-iga, saate selle sellelt lingilt alla laadida
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Selle JXL-i zip-faili seest leiate ka demonäite, kuna näidetracAllolev tedi sisu näitab.
Mõned funktsioonid:
- JXL suudab Exceli faili sisse lugeda Selenium 95, 97, 2000, XP, 2003 töövihiku jaoks.
- Saame töötada inglise, prantsuse, hispaania, saksa keelega.
- Diagrammi ja pildi sisestamine Excelis on võimalik
Puudus:
- Saame kirjutada ainult Excel 97 ja uuemad versioonid (Excel 95 kirjutamist ei toetata).
- JXL ei toeta Exceli faili XLSX-vormingut.
- See loob arvutustabeli Excel 2000 vormingus.










