Jak czytać/zapisywać dane w programie Excel Selenium Korzystanie z Apache POI
⚡ Inteligentne podsumowanie
Dysk plików Excel Selenium testy oparte na danych, a Apache POI to Java Biblioteka, która je odczytuje i zapisuje. Poniższe sekcje obejmują zależności, klasy podstawowe, przykłady odczytu i zapisu oraz JXL.
Plik I/O jest kluczową częścią każdego procesu tworzenia oprogramowania. Często tworzymy plik, otwieramy go i aktualizujemy coś lub usuwamy z naszych komputerów. Podobnie jest z Selenium Automatyzacja. Potrzebujemy procesu do manipulowania plikami Selenium.
Java udostępnia nam różne klasy do manipulacji plikami Selenium. W tym samouczku dowiemy się, jak czytać i pisać przewyższać plik za pomocą Java Pakiet IO i Apache Biblioteka POI.
Punkty POI Apache w Selenium
Punkty POI Apache w Selenium jest powszechnie używanym API dla Selenium testowanie oparte na danych. Jest to biblioteka POI napisana w Java który zapewnia użytkownikom interfejs API do manipulacji Microsoft Dokumenty takie jak .xls i .xlsx. Użytkownicy mogą łatwo tworzyć, modyfikować i odczytywać/zapisywać pliki Excela. POI to skrót od „Poor Obfuscation Implementation” (słaba implementacja zaciemniania).
Jak obsługiwać plik Excela za pomocą POI (zależność Maven POM)
Linki POI Selenium test do poniższego skoroszytu.
Aby czytać i zapisywać plik Excel w JavaApache udostępnia bardzo znaną bibliotekę POI. Biblioteka ta umożliwia odczyt i zapis plików XLS i XLSX w formacie Excel.
Aby odczytać pliki XLS, biblioteka POI udostępnia implementację HSSF.
Do odczytu XLSX, najlepszym wyborem będzie implementacja biblioteki POI w XSSF. Przyjrzyjmy się tym implementacjom szczegółowo.
Jeśli w swoim projekcie używasz Mavena, zależność Mavena zostanie dodana do pliku pom.xml, jak pokazano poniżej.
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
Uwaga dotycząca wersji: 4.1.1 to oryginalny przykład; obecne projekty deklarują poi-ooxml 5.5.1, który jest wymagany dla XLSX.
Możesz też po prostu pobrać najnowszą wersję słoików POI http://poi.apache.org/download.html i pobierz najnowszy plik zip
Po pobraniu pliku zip dla tego słoika musisz go rozpakować i dodać wszystkie słoiki do ścieżki klas swojego projektu.
Klasy i interfejsy w POI
Poniżej znajduje się lista różnych Java Interfejsy i klasy w POI do odczytu plików XLS i XLSX pokazane poniżej:
- Zeszyt ćwiczeń: Interfejs ten jest implementowany przez klasy XSSFWorkbook i HSSFWorkbook.
- XSSFWorkbook: Jest reprezentacją klasy pliku XLSX.
- HSSFWorkbook: Jest reprezentacją klasy pliku XLS.
- Arkusz: Interfejs ten jest implementowany przez klasy XSSFSheet i HSSFSheet.
- Arkusz XSSF: Jest klasą reprezentującą arkusz w pliku XLSX.
- Arkusz HSSF: Jest klasą reprezentującą arkusz w pliku XLS.
- Wiersz: Interfejs ten jest implementowany przez klasy XSSFRow i HSSFrow.
- XSSFrow: Jest klasą reprezentującą wiersz w arkuszu pliku XLSX.
- HSSFrow: Jest klasą reprezentującą wiersz w arkuszu pliku XLS.
- Komórka: Interfejs ten jest implementowany przez klasy XSSFCell i HSSFCell.
- XSSFCell: Jest klasą reprezentującą komórkę w wierszu pliku XLSX.
- Komórka HSSFC: Jest klasą reprezentującą komórkę w wierszu pliku XLS.
Odczyt / zapis Operacja
W naszym przykładzie rozważymy poniżej podany format pliku Excel
Odczyt danych z pliku Excel
Pełny przykład: Tutaj próbujemy odczytać dane z programu Excel w 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"); } }
Uwaga: Nie używamy TestNG ramy tutaj. Uruchom klasę jako Java Aplikacja korzystająca z funkcji odczytu Excela Selenium jak pokazano w powyższym przykładzie.
Następnie konsola drukuje każdy wiersz, komórka po komórce.
Zapisz dane w pliku Excel
Pełny przykład: Tutaj próbujemy zapisać dane z pliku Excel, dodając nowy wiersz w pliku Excel
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); } }
Następnie skoroszyt zawiera dołączony wiersz.
Manipulacja Excelem przy użyciu API JXL
JXL to także kolejny znany słoik do odczytu pliku Excel Java i zapisywanie plików. Obecnie POI jest używany w większości projektów, ale przed POI był tylko JXL Java API do manipulacji Excelem. Jest to bardzo mały i prosty interfejs API do odczytu programu Excel Selenium.
WSKAZÓWKA: Moją sugestią jest, aby nie używać JXL w żadnym nowym projekcie, ponieważ biblioteka nie jest aktywnie rozwijana od 2010 r. — 2.6.12 to nadal jej najnowsza wersja — a ponadto brakuje tej funkcji w porównaniu do API POI.
Pobierz JXL:
Jeśli chcesz pracować z JXL, możesz pobrać go z tego linku
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
Przykład demonstracyjny można również pobrać z tego spakowanego pliku dla JXL, jako przykładtracPoniżej znajduje się treść TED.
Niektóre funkcje:
- JXL jest w stanie odczytać plik Excel Selenium dla skoroszytu 95, 97, 2000, XP, 2003.
- Współpracujemy z językiem angielskim, francuskim, hiszpańskim, niemieckim.
- Możliwe jest kopiowanie wykresu i wstawianie obrazu do Excela
Wada:
- Możemy pisać tylko w programie Excel 97 i nowszych (pisanie w programie Excel 95 nie jest obsługiwane).
- JXL nie obsługuje formatu XLSX pliku Excel.
- Generuje arkusz kalkulacyjny w formacie Excel 2000.










