Dosya IO, herhangi bir yazılım sürecinin kritik bir parçasıdır. Bilgisayarlarımızda sık sık bir dosya oluşturur, açar ve bir şeyi günceller veya sileriz. Selenium Otomasyon için de aynı durum söz konusudur. Selenium ile dosyaları işlemek için bir işleme ihtiyacımız var.
Java, Selenium ile Dosya İşleme için bize farklı sınıflar sağlar. Bu eğitimde, Java IO paketi ve Apache POI kütüphanesi yardımıyla Excel dosyasını nasıl okuyup yazabileceğimizi öğreneceğiz.
Selenium'da Apache POI
Selenyum Apache POI test güdümlü selenyum verileri için yaygın olarak kullanılan bir API olduğunu. Kullanıcılara .xls ve .xlsx gibi Microsoft belgelerini işlemek için bir API sağlayan Java'da yazılmış bir POI kitaplığıdır. Kullanıcılar excel dosyalarını kolaylıkla oluşturabilir, değiştirebilir ve okuyabilir / yazabilir. POI, "Zayıf Gizleme Uygulaması" anlamına gelir.
- POI (Maven POM Bağımlılığı) kullanılarak excel dosyası nasıl işlenir
- POI'deki Sınıflar ve Arayüzler
- Okuma / Yazma işlemi
- Excel dosyasından verileri oku
- Excel dosyasına veri yazın
- JXL API kullanarak Excel Manipülasyonu
Excel'i dışa aktarma
POI (Maven POM Bağımlılığı) kullanılarak excel dosyası nasıl işlenir
Java'da Excel dosyasını Okumak ve Yazmak için Apache çok ünlü bir kitaplık POI'si sağlar. Bu kütüphane okuma ve hem yazma yeteneğine yeterlidir XLS ve XLSX Excel dosya biçimini.
XLS dosyalarını okumak için POI kitaplığı tarafından bir HSSF uygulaması sağlanır.
Okumak için XLSX, XSSF uygulanması POI kütüphanesinde seçim olacaktır. Bu uygulamaları detaylı olarak inceleyelim.
Projenizde Maven kullanıyorsanız, Maven bağımlılığı
org.apache.poi poi 4.1.1
Veya en son sürüm POI kavanozlarını http://poi.apache.org/download.html adresinden indirebilir ve en son zip dosyasını indirebilirsiniz.
Bu jar için zip dosyasını indirdiğinizde, onu açmanız ve tüm bu kavanozları projenizin sınıf yoluna eklemeniz gerekir.
POI'deki Sınıflar ve Arayüzler:
Farklı Java Arayüz ve sınıfların listesi aşağıdadır POI okumak için XLS ve XLSX Dosya-
- Çalışma kitabı : XSSFWorkbook ve HSSFWorkbook sınıfları bu arabirimi uygular.
- XSSFWorkbook : XLSX dosyasının sınıf temsilidir.
- HSSFWorkbook : XLS dosyasının sınıf temsilidir.
- Sayfa : XSSFSheet ve HSSFSheet sınıfları bu arabirimi uygular.
- XSSFSheet : XLSX dosyasındaki bir sayfayı temsil eden bir sınıftır.
- HSSFSheet : Bir XLS dosyasındaki bir sayfayı temsil eden bir sınıftır.
- Satır : XSSFRow ve HSSFRow sınıfları bu arabirimi uygular.
- XSSFRow : XLSX dosyası sayfasındaki bir satırı temsil eden bir sınıftır.
- HSSFRow : XLS dosyası sayfasındaki bir satırı temsil eden bir sınıftır.
- Hücre : XSSFCell ve HSSFCell sınıfları bu arabirimi uygular.
- XSSFCell : XLSX dosyası satırındaki bir hücreyi temsil eden sınıftır.
- HSSFCell: XLS dosyası satırındaki bir hücreyi temsil eden bir sınıftır.
Okuma / Yazma işlemi-
Örneğimiz için, aşağıda verilen Excel dosya biçimini ele alacağız.
Excel dosyasından verileri oku
Tam Örnek: Burada Excel'den Selenium'daki verileri okumaya çalışıyoruz:
excelExportAndFileIO paketi;java.io.File içe aktarma;java.io.FileInputStream'i içe aktarın;java.io.IOException'ı içe aktarın;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) IOException {// xlsx dosyasını açmak için bir File sınıfı nesnesi oluşturunDosya dosya = yeni Dosya (dosyaYolu + "\\" + dosyaAdı);// Excel dosyasını okumak için FileInputStream sınıfının bir nesnesini oluşturunFileInputStream inputStream = new FileInputStream (dosya);Çalışma kitabı guru99Workbook = null;// Alt dizeye dosya adını bölerek ve yalnızca uzantı adını alarak dosya uzantısını bulunString fileExtensionName = dosyaAdı.substring (dosyaAdı.indexOf ("."));// Dosyanın xlsx dosyası olup olmadığını kontrol edineğer (fileExtensionName.equals (". xlsx")) {// Eğer xlsx dosyasıysa XSSFWorkbook sınıfının nesnesini yaratınguru99Workbook = yeni XSSFWorkbook (inputStream);}// Dosyanın xls dosyası olup olmadığını kontrol edinelse if (fileExtensionName.equals (". xls")) {// Eğer xls dosyasıysa HSSFWorkbook sınıfının nesnesini yaratınguru99Workbook = yeni HSSFWorkbook (inputStream);}// Çalışma kitabının içindeki sayfayı adına göre okuyunSayfa guru99Sheet = guru99Workbook.getSheet (sheetName);// Excel dosyasındaki satır sayısını bulint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Okumak için excel dosyasının tüm satırları üzerinde bir döngü oluşturunfor (int i = 0; iNot: Burada Testng çerçevesini kullanmıyoruz. Yukarıdaki örnekte gösterildiği gibi Selenium'da excel okuma işlevini kullanarak sınıfı Java Uygulaması olarak çalıştırın.
Excel dosyasına veri yazın
Tam Örnek: Burada Excel dosyasına yeni satır ekleyerek Excel dosyasından veri yazmaya çalışıyoruz
excelExportAndFileIO paketi;java.io.File içe aktarma;java.io.FileInputStream'i içe aktarın;import java.io.FileOutputStream;java.io.IOException'ı içe aktarın;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) IOException {// xlsx dosyasını açmak için bir File sınıfı nesnesi oluşturunDosya dosya = yeni Dosya (dosyaYolu + "\\" + dosyaAdı);// Excel dosyasını okumak için FileInputStream sınıfının bir nesnesini oluşturunFileInputStream inputStream = new FileInputStream (dosya);Çalışma kitabı guru99Workbook = null;// Alt dizeye dosya adını bölerek ve yalnızca uzantı adını alarak dosya uzantısını bulunString fileExtensionName = dosyaAdı.substring (dosyaAdı.indexOf ("."));// Dosyanın xlsx dosyası olup olmadığını kontrol edineğer (fileExtensionName.equals (". xlsx")) {// Eğer xlsx dosyasıysa XSSFWorkbook sınıfının nesnesini yaratınguru99Workbook = yeni XSSFWorkbook (inputStream);}// Dosyanın xls dosyası olup olmadığını kontrol edinelse if (fileExtensionName.equals (". xls")) {// Eğer bu xls dosyası ise XSSFWorkbook sınıfının nesnesini yaratınguru99Workbook = yeni HSSFWorkbook (inputStream);}// Excel sayfasını sayfa adına göre okuyunSayfa sayfası = guru99Workbook.getSheet (sheetName);// Excel dosyasındaki mevcut satır sayısını alint rowCount = page.getLastRowNum () - page.getFirstRowNum ();// Sayfadan ilk satırı alınSatır satır = page.getRow (0);// Yeni bir satır oluşturun ve sayfanın sonuna ekleyinSatır newRow = page.createRow (rowCount + 1);// Yeni oluşturulan Satırın hücresi üzerinde bir döngü oluşturunfor (int j = 0; jJXL API kullanarak Excel Manipülasyonu
JXL, Excel dosyasını Java'da okumak ve dosya yazmak için başka bir ünlü kavanozdur. Günümüzde, POI projelerin çoğunda kullanılmaktadır, ancak POI'den önce JXL, Excel manipülasyonu için yalnızca Java API idi. Selenium'da mükemmel okuma için çok küçük ve basit bir API'dir.
İPUÇLARI: Benim önerim JXL'i herhangi bir yeni projede kullanmamak, çünkü kütüphane 2010 yılından itibaren aktif olarak geliştirilmiyor ve POI API ile karşılaştırıldığında bu özellik yok.
JXL'i indirin:
JXL ile çalışmak istiyorsanız, bu linkten indirebilirsiniz.
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
JXL için bu sıkıştırılmış dosyanın içinde demo örneği de alabilirsiniz.
Bazı özellikler:
- JXL, 95, 97, 2000, XP, 2003 çalışma kitabı için Selenium'daki Excel dosyasını okuyabilir.
- İngilizce, Fransızca, İspanyolca, Almanca ile çalışabiliriz.
- Excel'de bir Grafik ve görüntü ekleme kopyalamak mümkündür
Dezavantaj:
- Yalnızca Excel 97 ve sonrasını yazabiliriz (Excel 95'te yazma desteklenmez).
- JXL, excel dosyasının XLSX formatını desteklemez.
- Excel 2000 formatında elektronik tablo oluşturur.
Özet:
- Excel dosyası Java IO işlemi ile okunabilir. Bunun için Apache POI Jar kullanmamız gerekiyor .
- Excel dosyasında XLSX ve XLS dosyaları olmak üzere iki tür çalışma kitabı vardır .
- POI, farklı Arayüzlere sahiptir Çalışma Kitabı, Sayfa, Satır, Hücre.
- Bu arayüzler, karşılık gelen XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) ve XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ) dosya işleme sınıfları tarafından uygulanır.
- JXL, Selenium'da Excel işleme için başka bir API'dir.
- JXL, excel'in XLSX formatıyla çalışamaz.