Adatok olvasása/írása Excel fájlból: Selenium POI
A fájl IO minden szoftverfolyamat kritikus része. Gyakran létrehozunk egy fájlt, megnyitjuk és frissítünk valamit, vagy töröljük a számítógépeinkről. Ugyanez a helyzet a Selenium Automatizálás. Szükségünk van egy folyamatra a fájlok kezeléséhez Selenium.
Java különböző osztályokat biztosít számunkra a fájlkezeléshez Selenium. Ebben az oktatóanyagban megtanuljuk, hogyan tudunk tovább írni és olvasni Excel fájl segítségével Java IO csomag és Apache POI könyvtár.
Apache POI be Selenium
A Apache POI be Selenium egy széles körben használt API a szelén adatvezérelt teszteléséhez. Ez egy POI könyvtár, amelybe be van írva Java amely API-t ad a felhasználóknak a manipulációhoz Microsoft olyan dokumentumok, mint az .xls és .xlsx. A felhasználók könnyen létrehozhatnak, módosíthatnak és olvashatnak/írhatnak Excel fájlokat. A POI a „Poor Obfuscation Implementation” rövidítése.
Excel exportálása
Az Excel fájl kezelése POI-val (Maven POM Dependency)
Excel fájl olvasása és írása Java, Az Apache egy nagyon híres könyvtári POI-t biztosít. Ez a könyvtár elég képes írni és olvasni egyaránt XLS és a XLSX Excel fájlformátum.
Olvasni XLS fájlok, an HSSF A megvalósítást a POI könyvtár biztosítja.
Olvasni XLSX, XSSF végrehajtása POI könyvtár lesz a választás. Tanulmányozzuk ezeket a megvalósításokat részletesen.
Ha Maven-t használ a projektben, a Maven-függőség a következő lesz
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
Vagy egyszerűen letöltheti a POI tégelyek legújabb verzióját innen http://poi.apache.org/download.html és töltse le a legújabb zip fájlt
Amikor letölti a zip fájlt ehhez a jarhoz, ki kell csomagolnia, és hozzá kell adnia ezeket az összes jar-t a projekt osztályútvonalához.
Osztályok és interfészek a POI-ban

Az alábbiakban egy lista a különböző Java Interfészek és osztályok POI az olvasáshoz XLS és a XLSX filé-
- Munkafüzet: Az XSSFWorkbook és a HSSFWorkbook osztályok valósítják meg ezt a felületet.
- XSSFWorkbook: Az XLSX fájl osztályábrázolása.
- HSSFWorkbook: Az XLS fájl osztályábrázolása.
- lap: Az XSSFSheet és a HSSFSheet osztályok valósítják meg ezt az interfészt.
- XSSFSheet: Egy osztály, amely egy XLSX fájlban lévő lapot képvisel.
- HSSFS-lap: Egy osztály, amely egy XLS-fájlban lévő lapot képvisel.
- Sor: Az XSSFRow és a HSSFRow osztályok valósítják meg ezt az interfészt.
- XSSFRrow: Egy osztály az XLSX fájl lapjának egy sorát jelöli.
- HSSFRow: Egy osztály, amely egy sort képvisel az XLS fájl lapján.
- Sejt: Az XSSFCell és a HSSFCell osztályok valósítják meg ezt az interfészt.
- XSSFCell: Egy osztály, amely egy XLSX fájl sorában lévő cellát képvisel.
- HSSFCell: Egy osztály, amely egy XLS-fájl sorában lévő cellát képvisel.
Olvasás/írás művelet
Példánkban az alábbiakban az adott Excel fájlformátumot vesszük figyelembe
Adatok olvasása Excel fájlból
Teljes példa: Itt az Excelből próbálunk adatokat beolvasni 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"); } }
Megjegyzés: Nem használjuk a Testng keret itt. Futtassa az osztályt mint Java Az Excel beolvasási funkciót használó alkalmazás Selenium ahogy a fenti példában látható.
Írjon adatokat Excel fájlba
Teljes példa: Itt megpróbálunk adatokat írni Excel fájlból új sor hozzáadásával az Excel fájlba
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-manipuláció a JXL API-val
A JXL egy másik híres jar az Excel-fájlok olvasásához Java és fájlok írása. Manapság a legtöbb projektben a POI-t használják, de a POI előtt csak a JXL Java API Excel manipulációhoz. Ez egy nagyon kicsi és egyszerű API az Excel beolvasásához Selenium.
TIPP: Azt javaslom, hogy ne használjuk a JXL-t semmilyen új projektben, mert a könyvtár 2010-től nincs aktív fejlesztés alatt, és a POI API-hoz képest hiányzik a funkció.
JXL letöltése:
Ha a JXL-lel szeretne dolgozni, letöltheti erről a linkről
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Demópéldát is kaphat ebben a tömörített JXL fájlban.
Néhány szolgáltatás:
- A JXL képes beolvasni az Excel fájlokat Selenium 95, 97, 2000, XP, 2003 munkafüzethez.
- Angol, francia, spanyol, német nyelven tudunk dolgozni.
- A diagram és a kép beszúrása Excelben lehetséges
Hátrány:
- Csak Excel 97 és újabb verziókat tudunk írni (az Excel 95-ben való írás nem támogatott).
- A JXL nem támogatja az excel fájl XLSX formátumát.
- Táblázatot generál Excel 2000 formátumban.
Összegzésként
- Az Excel fájlt olvashatja Java IO működés. Ehhez használnunk kell Apache POI Jar.
- Az Excel fájlban kétféle munkafüzet létezik, XLSX és a XLS fájlokat.
- A POI-nak különböző interfészei vannak: munkafüzet, lap, sor, cella.
- Ezeket az interfészek megfelelő módon valósítják meg XLS (HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell) És XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) fájlkezelési osztályok.
- A JXL egy másik API az Excel kezeléséhez Selenium.
- A JXL nem működik az Excel XLSX formátumával.