Jak czytać / zapisywać dane z pliku Excel: Selenium POI

Spisie treści:

Anonim

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:

Klasy i interfejsy w Apache 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; i 

Uwaga: 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; j 

Manipulacja 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.