Kuidas lugeda/kirjutada andmeid Exceli failist: Selenium POI
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 seleeni andmepõhise testimise jaoks laialdaselt kasutatav API. See on POI-teek, mis on sisse kirjutatud Java mis annab kasutajatele manipuleerimiseks API Microsoft dokumendid nagu .xls ja .xlsx. Kasutajad saavad hõlpsasti Exceli faile luua, muuta ja lugeda/kirjutada. POI tähistab "halva hägustamise rakendamist".
Exceli eksportimine
Kuidas käsitleda Exceli faili POI-ga (Maven POM Dependency)
Exceli faili lugemiseks ja kirjutamiseks Java, Apache pakub väga kuulsat raamatukogu POI-d. See raamatukogu on piisavalt võimeline nii lugemiseks kui ka kirjutamiseks XLS ja XLSX Exceli failivormingus.
Lugema XLS failid, an HSSF teostuse pakub POI raamatukogu.
Lugema XLSX, XSSF rakendamine POI raamatukogu saab olema valik. Uurime neid rakendusi üksikasjalikult.
Kui kasutate oma projektis Mavenit, on Maveni sõltuvus
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
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 Liidesed ja klassid POI lugemiseks XLS ja XLSX filee-
- Töövihik: XSSFWorkbook ja HSSFWorkbook klassid rakendavad seda liidest.
- XSSF tööraamat: on XLSX-faili klassi esitus.
- HSSF tööraamat: on XLS-faili klassi esitus.
- leht: XSSFSheet ja HSSFSheet klassid rakendavad seda liidest.
- XSSFSheet: on klass, mis esindab lehte XLSX-failis.
- HSSFS-leht: on klass, mis esindab lehte XLS-failis.
- Rida: XSSFRow ja HSSFRow klassid rakendavad seda liidest.
- XSSFRrow: on klass, mis esindab rida XLSX-faili lehel.
- HSSFRrow: on klass, mis esindab rida XLS-faili lehel.
- Rakk: XSSFCell ja HSSFCell klassid rakendavad seda liidest.
- XSSFCell: on klass, mis esindab lahtrit XLSX-faili reas.
- HSSFCell: Kas klass, mis esindab XLS-faili rea lahtrit.
Lugemis-/kirjutusoperatsioon
Meie näite puhul käsitleme allpool antud Exceli failivormingut
Lugege andmeid Exceli failist
Täielik näide: siin proovime lugeda Exceli andmeid 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ärkus: 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.
Kirjutage andmed Exceli faili
Täielik näide: siin proovime kirjutada andmeid Exceli failist, 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); } }
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 raamatukogu ei ole alates 2010. aastast aktiivses arenduses ja funktsiooni puudumine 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 pakitud faili seest saate ka demonäidise.
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.
kokkuvõte
- Exceli faili saab lugeda Java IO operatsioon. Selleks peame kasutama Apache POI Jar.
- Exceli failis on kahte tüüpi töövihikuid, XLSX ja XLS faile.
- HP-l on erinevad liidesed töövihik, leht, rida, lahter.
- Need liidesed on rakendatud vastavate XLS (HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell) Ja XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) failiga manipuleerimise klassid.
- JXL on veel üks API Exceli haldamiseks Selenium.
- JXL ei saa töötada Exceli XLSX-vorminguga.