Kuinka lukea/kirjoittaa tietoja Excel-tiedostosta: Selenium KP
Tiedoston IO on tärkeä osa mitä tahansa ohjelmistoprosessia. Luomme usein tiedoston, avaamme sen ja päivitämme jotain tai poistamme sen tietokoneistamme. Sama on asian kanssa Selenium Automaatio. Tarvitsemme prosessin tiedostojen käsittelyyn Selenium.
Java tarjoaa meille erilaisia luokkia tiedostojen käsittelyyn Selenium. Tässä opetusohjelmassa opimme, kuinka voimme lukea ja kirjoittaa kunnostautua tiedosto avulla Java IO-paketti ja Apache POI-kirjasto.
Apache POI sisään Selenium
- Apache POI sisään Selenium on laajalti käytetty API seleenitietopohjaiseen testaukseen. Se on POI-kirjasto, johon on kirjoitettu Java joka antaa käyttäjille APIn manipulointia varten Microsoft asiakirjoja, kuten .xls ja .xlsx. Käyttäjät voivat helposti luoda, muokata ja lukea/kirjoittaa Excel-tiedostoja. POI on lyhenne sanoista "huono obfuscation Implementation".
Excelin vienti
Kuinka käsitellä Excel-tiedostoa POI:lla (Maven POM Dependency)
Excel-tiedoston lukemiseen ja kirjoittamiseen Java, Apache tarjoaa erittäin kuuluisan kirjaston POI:n. Tämä kirjasto pystyy tarpeeksi lukemaan ja kirjoittamaan molempia XLS ja XLSX Excelin tiedostomuoto.
Lukea XLS tiedostot, an HSSF toteutuksen tarjoaa POI-kirjasto.
Lukea XLSX, XSSF toteutus KP kirjasto tulee olemaan valinta. Tutkitaanpa näitä toteutuksia yksityiskohtaisesti.
Jos käytät Mavenia projektissasi, Maven-riippuvuus on
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
Tai voit yksinkertaisesti ladata uusimman version POI-purkit osoitteesta http://poi.apache.org/download.html & lataa uusin zip-tiedosto
Kun lataat tämän purkin zip-tiedoston, sinun on purettava se ja lisättävä nämä kaikki purkit projektisi luokkapolkuun.
Luokat ja käyttöliittymät POI:ssa
Seuraavassa on luettelo erilaisista Java Liitännät ja luokat KP lukemiseen XLS ja XLSX filee-
- Työkirja: XSSFWorkbook- ja HSSFWorkbook-luokat toteuttavat tämän rajapinnan.
- XSSF-työkirja: on XLSX-tiedoston luokkaesitys.
- HSSF-työkirja: on XLS-tiedoston luokkaesitys.
- arkki: XSSFSheet- ja HSSFSheet-luokat toteuttavat tämän rajapinnan.
- XSSFS-lehti: Onko luokka, joka edustaa arkkia XLSX-tiedostossa.
- HSSFS-lehti: Onko luokka, joka edustaa arkkia XLS-tiedostossa.
- Rivi: XSSFRow- ja HSSFRow-luokat toteuttavat tämän rajapinnan.
- XSSFRrow: Onko luokka, joka edustaa riviä XLSX-tiedoston arkissa.
- HSSFRrow: Onko luokka, joka edustaa riviä XLS-tiedoston arkissa.
- Solu: XSSFCell- ja HSSFCell-luokat toteuttavat tämän rajapinnan.
- XSSFCell: Onko luokka, joka edustaa XLSX-tiedoston rivin solua.
- HSSFCell: Onko luokka, joka edustaa XLS-tiedoston rivin solua.
Luku/kirjoitustoiminto
Esimerkissämme tarkastelemme alla annettua Excel-tiedostomuotoa
Lue tiedot Excel-tiedostosta
Täydellinen esimerkki: Tässä yritämme lukea tietoja Excelistä 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"); } }
Huomautus: Emme käytä Testng puitteet täällä. Suorita luokka nimellä Java Sovellus, joka käyttää toimintoa read excel in Selenium kuten yllä olevassa esimerkissä näkyy.
Kirjoita tiedot Excel-tiedostoon
Täydellinen esimerkki: Tässä yritämme kirjoittaa tietoja Excel-tiedostosta lisäämällä uuden rivin Excel-tiedostoon
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-manipulaatio JXL API:lla
JXL on myös toinen kuuluisa purkki Excel-tiedoston lukemiseen Java ja tiedostojen kirjoittaminen. Nykyään POI on käytössä useimmissa projekteissa, mutta ennen POI:ta JXL oli vain Java API Excelin käsittelyyn. Se on erittäin pieni ja yksinkertainen API Excelin lukemiseen Selenium.
VINKKI: Ehdotukseni on olla käyttämättä JXL:ää missään uudessa projektissa, koska kirjastoa ei ole kehitetty aktiivisesti vuodesta 2010 lähtien ja ominaisuus puuttuu POI API:sta verrattuna.
Lataa JXL:
Jos haluat työskennellä JXL:n kanssa, voit ladata sen tästä linkistä
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Voit myös saada esittelyesimerkin tämän JXL:n zip-tiedoston sisällä.
Jotkut ominaisuuksista:
- JXL pystyy lukemaan Excel-tiedoston sisään Selenium 95, 97, 2000, XP, 2003 työkirjalle.
- Pystymme työskentelemään englannin, ranskan, espanjan ja saksan kielellä.
- Kaavion ja kuvan lisäys Excelissä on mahdollista
Haittapuoli:
- Voimme kirjoittaa vain Excel 97:ssä ja uudemmissa (Excel 95:ssä kirjoittamista ei tueta).
- JXL ei tue excel-tiedoston XLSX-muotoa.
- Se luo laskentataulukon Excel 2000 -muodossa.
Yhteenveto
- Excel-tiedosto voidaan lukea Java IO-toiminta. Sitä varten meidän on käytettävä Apache POI Jar.
- Excel-tiedostossa on kahdenlaisia työkirjoja, XLSX ja XLS tiedostoja.
- POI:lla on eri käyttöliittymät työkirja, taulukko, rivi, solu.
- Nämä rajapinnat toteutetaan vastaavilla XLS (HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell) Ja XLSX (XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell) tiedostojen käsittelyluokat.
- JXL on toinen API Excelin käsittelyyn Selenium.
- JXL ei toimi Excelin XLSX-muodon kanssa.