Hogyan olvassunk/írjunk Excel adatokat? Selenium Apache POI használata
⚡ Okos összefoglaló
Excel fájlok meghajtója Selenium adatvezérelt tesztek, és az Apache POI a Java könyvtár, amely olvassa és írja őket. Az alábbi szakaszok a függőségeket, az alapvető osztályokat, az olvasási és írási példákat, valamint a JXL-t tárgyalják.
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
Az Apache POI be Selenium egy széles körben használt API a következőkhöz: Selenium adatvezérelt tesztelésEz egy POI könyvtár, amelyet a következő nyelven írtak: Java amely API-t ad a felhasználóknak a manipulációhoz Microsoft dokumentumok, például .xls és .xlsx. A felhasználók könnyen létrehozhatnak, módosíthatnak és olvashatnak/írhatnak Excel fájlokba. A POI a „Poor Obfuscation Implementation” (gyenge obfuskáció megvalósítása) rövidítése.
Excel fájlok kezelése POI használatával (Maven POM függőség)
POI linkek Selenium teszt az alábbi munkafüzethez.
Excel fájl olvasása és írása JavaAz Apache egy nagyon híres POI könyvtárat biztosít. Ez a könyvtár képes mind az XLS, mind az XLSX fájlformátumú Excel fájlok olvasására és írására.
XLS fájlok olvasásához a POI könyvtár HSSF implementációt biztosít.
Az XLSX olvasásához a POI könyvtár XSSF implementációja lesz a választás. Vizsgáljuk meg részletesen ezeket az implementációkat.
Ha Mavent használ a projektedben, a Maven függőség az alábbiak szerint kerül hozzáadásra a pom.xml fájlhoz.
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
Verzió megjegyzés: A 4.1.1 az eredeti példa; a jelenlegi projektek deklarálják poi-ooxml 5.5.1, ami az XLSX-hez szükséges.
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 Az alábbiakban látható POI interfészek és osztályok XLS és XLSX fájlok olvasásához:
- Munkafüzet: Az XSSFWorkbook és HSSFWorkbook osztályok implementálják ezt a felületet.
- XSSFMunkafüzet: Az XLSX fájl osztályreprezentációja.
- HSSFMunkafüzet: Az XLS fájl osztályreprezentációja.
- Lap: Az XSSFSheet és a HSSFSheet osztályok implementálják ezt a felületet.
- XSSFS lap: Egy osztály, amely egy XLSX fájlban lévő munkalapot reprezentál.
- HSSFS lap: Egy osztály, amely egy XLS fájlban lévő munkalapot reprezentál.
- Sor: Az XSSFRow és HSSFRow osztályok implementálják ezt a felületet.
- XSSFRow: Egy osztály, amely egy sort reprezentál egy XLSX fájl munkalapján.
- HSSFRow: Egy osztály, amely egy sort reprezentál egy XLS fájl munkalapján.
- Mobil: Az XSSFCell és HSSFCell osztályok implementálják ezt a felületet.
- XSSFCell: Egy osztály, amely egy XLSX fájl sorában lévő cellát reprezentál.
- HSSFCell: Egy osztály, amely egy XLS-fájl sorában lévő cellát képvisel.
Ír olvas OperaCIÓ
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 Excelből próbálunk adatokat olvasni. 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"); } }
Jegyzet: 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ó.
A konzol ezután cellánként kinyomtatja az összes sort.
Adatok írása Excel fájlba
Teljes példa: Itt Excel fájlból próbálunk adatokat írni új sor hozzáadásával az Excel fájlban.
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); } }
A munkafüzet ezután tartalmazza a hozzáfűzött sort.
Excel-manipuláció JXL API használatá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.
Tippek: Azt javaslom, hogy ne használjunk JXL-t új projektekben, mivel a könyvtár nincs aktív fejlesztés alatt 2010 óta – a 2.6.12 még mindig a legújabb kiadás –, és hiányzik belőle a POI API-hoz képest ez 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/
Ebben a zip fájlban JXL demó példát is találhatsz, mivel az példatracAz alábbi ted tartalom látható.
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.










