File IO to krytyczna część każdego procesu tworzenia oprogramowania. Często tworzymy plik, otwieramy go i aktualizujemy lub usuwamy na naszych komputerach. To samo dotyczy Selenium Automation. Potrzebujemy procesu do manipulowania plikami za pomocą Selenium.
Java udostępnia nam różne klasy do manipulacji plikami z Selenium. W tym samouczku dowiemy się, jak możemy czytać i pisać w pliku Excel za pomocą pakietu Java IO i biblioteki Apache POI.
Apache POI w Selenium
Apache POI w Selen jest szeroko stosowanym API dla danych selenu napędzanych testowania. Jest to biblioteka POI napisana w Javie, która zapewnia użytkownikom interfejs API do manipulowania dokumentami Microsoft, takimi jak .xls i .xlsx. Użytkownicy mogą łatwo tworzyć, modyfikować i czytać / zapisywać w plikach programu Excel. POI to skrót od „Słaba implementacja zaciemniania”.
- Jak obsługiwać plik Excela za pomocą POI (zależność Maven POM)
- Klasy i interfejsy w POI
- Operacja odczytu / zapisu
- Odczytaj dane z pliku Excel
- Zapisz dane w pliku Excel
- Manipulacja programem Excel przy użyciu JXL API
Eksportowanie programu Excel
Jak obsługiwać plik Excela za pomocą POI (zależność Maven POM)
Aby czytać i zapisywać pliki Excela w Javie, Apache udostępnia bardzo znane biblioteki POI. Ta biblioteka jest w stanie odczytywać i zapisywać pliki w formacie XLS i XLSX programu Excel.
Aby odczytać pliki XLS , implementację HSSF zapewnia biblioteka POI.
Aby odczytać XLSX, wyborem będzie implementacja biblioteki POI w XSSF . Przeanalizujmy szczegółowo te implementacje.
Jeśli używasz Mavena w swoim projekcie, zależność Maven będzie
org.apache.poi poi 4.1.1
Możesz też po prostu pobrać najnowszą wersję słoików z POI ze strony http://poi.apache.org/download.html i pobrać najnowszy plik zip
Kiedy pobierasz plik zip dla tego jar, musisz go rozpakować i dodać te wszystkie pliki jar do ścieżki klas swojego projektu.
Klasy i interfejsy w POI:
Poniżej znajduje się lista różnych interfejsów Java i klas w punktach POI do odczytu plików XLS i XLSX:
- Workbook : ten interfejs implementują klasy XSSFWorkbook i HSSFWorkbook.
- XSSFWorkbook : Jest klasową reprezentacją pliku XLSX.
- HSSFWorkbook : Jest klasową reprezentacją pliku XLS.
- Sheet : ten interfejs implementują klasy XSSFSheet i HSSFSheet.
- XSSFSheet : to klasa reprezentująca arkusz w pliku XLSX.
- HSSFSheet : to klasa reprezentująca arkusz w pliku XLS.
- Wiersz : klasy XSSFRow i HSSFRow implementują ten interfejs.
- XSSFRow : To klasa reprezentująca wiersz w arkuszu pliku XLSX.
- HSSFRow : to klasa reprezentująca wiersz w arkuszu pliku XLS.
- Klasy Cell : XSSFCell i HSSFCell implementują ten interfejs.
- XSSFCell : to klasa reprezentująca komórkę w wierszu pliku XLSX.
- HSSFCell: to klasa reprezentująca komórkę w wierszu pliku XLS.
Operacja odczytu / zapisu
W naszym przykładzie rozważymy poniżej podany format pliku Excel
Odczytaj dane z pliku Excel
Pełny przykład: Tutaj próbujemy odczytać dane z Excela w Selenium:
pakiet 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) rzuca IOException {// Utwórz obiekt klasy File, aby otworzyć plik xlsxPlik plik = nowy plik (ścieżka_pliku + "\\" + nazwa_pliku);// Utwórz obiekt klasy FileInputStream, aby odczytać plik ExcelaFileInputStream inputStream = nowy FileInputStream (plik);Skoroszyt guru99Workbook = null;// Znajdź rozszerzenie pliku, dzieląc nazwę pliku na podciąg i uzyskując tylko nazwę rozszerzeniaString fileExtensionName = nazwa_pliku.substring (nazwa_pliku.indexOf ("."));// Sprawdź warunek, jeśli plik jest plikiem xlsxif (fileExtensionName.equals (". xlsx")) {// Jeśli jest to plik xlsx, utwórz obiekt klasy XSSFWorkbookguru99Workbook = nowy XSSFWorkbook (inputStream);}// Sprawdź warunek, jeśli plik jest plikiem xlselse if (fileExtensionName.equals (". xls")) {// Jeśli jest to plik xls, utwórz obiekt klasy HSSFWorkbookguru99Workbook = nowy HSSFWorkbook (inputStream);}// Czytaj arkusz wewnątrz skoroszytu według jego nazwyArkusz guru99Sheet = guru99Workbook.getSheet (nazwa arkusza);// Znajdź liczbę wierszy w pliku Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Utwórz pętlę dla wszystkich wierszy pliku Excela, aby go przeczytaćfor (int i = 0; iUwaga: nie używamy tutaj frameworka Testng. Uruchom klasę jako aplikację Java za pomocą funkcji read excel w Selenium, jak pokazano w powyższym przykładzie.
Zapisz dane w pliku Excel
Kompletny przykład: Tutaj próbujemy zapisać dane z pliku Excel, dodając nowy wiersz w pliku Excel
pakiet 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;klasa publiczna WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) rzuca IOException {// Utwórz obiekt klasy File, aby otworzyć plik xlsxPlik plik = nowy plik (ścieżka_pliku + "\\" + nazwa_pliku);// Utwórz obiekt klasy FileInputStream, aby odczytać plik ExcelaFileInputStream inputStream = nowy FileInputStream (plik);Skoroszyt guru99Workbook = null;// Znajdź rozszerzenie pliku, dzieląc nazwę pliku na podciąg i uzyskując tylko nazwę rozszerzeniaString fileExtensionName = nazwa_pliku.substring (nazwa_pliku.indexOf ("."));// Sprawdź warunek, jeśli plik jest plikiem xlsxif (fileExtensionName.equals (". xlsx")) {// Jeśli jest to plik xlsx, utwórz obiekt klasy XSSFWorkbookguru99Workbook = nowy XSSFWorkbook (inputStream);}// Sprawdź warunek, jeśli plik jest plikiem xlselse if (fileExtensionName.equals (". xls")) {// Jeśli jest to plik xls, utwórz obiekt klasy XSSFWorkbookguru99Workbook = nowy HSSFWorkbook (inputStream);}// Czytaj arkusz Excela według nazwy arkuszaArkusz arkusza = guru99Workbook.getSheet (nazwa_arkusza);// Pobierz aktualną liczbę wierszy w pliku Excelint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Pobierz pierwszy wiersz z arkuszaRow row = sheet.getRow (0);// Utwórz nowy wiersz i dołącz go na końcu arkuszaWiersz newRow = sheet.createRow (rowCount + 1);// Utwórz pętlę nad komórką nowo utworzonego wierszafor (int j = 0; jManipulacja programem Excel przy użyciu JXL API
JXL to także kolejny znany słoik do odczytywania plików Excela w Javie i zapisywania plików. Obecnie POI jest używane w większości projektów, ale przed POI JXL był tylko Java API do manipulacji w Excelu. Jest to bardzo mały i prosty interfejs API do czytania Excela w Selenium.
WSKAZÓWKI: Sugeruję, aby nie używać JXL w żadnym nowym projekcie, ponieważ biblioteka nie jest aktywnie rozwijana od 2010 roku i nie ma tej funkcji w porównaniu z 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/
Możesz również pobrać przykład demo w tym spakowanym pliku dla JXL.
Niektóre funkcje:
- JXL potrafi czytać plik Excela w Selenium dla skoroszytu 95, 97, 2000, XP, 2003.
- Możemy pracować z językiem angielskim, francuskim, hiszpańskim, niemieckim.
- Możliwe jest skopiowanie wykresu i wstawienie obrazu w programie Excel
Wada:
- Możemy pisać tylko w Excelu 97 i nowszych wersjach (pisanie w Excelu 95 nie jest obsługiwane).
- JXL nie obsługuje formatu XLSX pliku Excela.
- Generuje arkusz kalkulacyjny w formacie Excel 2000.
Podsumowanie:
- Plik Excel można odczytać za pomocą operacji Java IO. W tym celu musimy użyć Apache POI Jar .
- Istnieją dwa rodzaje skoroszytów w pliku Excel, pliki XLSX i XLS .
- POI ma różne interfejsy skoroszyt, arkusz, wiersz, komórka.
- Te interfejsy są implementowane przez odpowiednie klasy manipulacji plikami XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) i XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ).
- JXL to kolejny interfejs API do obsługi programu Excel w Selenium.
- JXL nie może współpracować z formatem XLSX programu Excel.