Excel Dosyasından Veri Nasıl Okunur/Yazılır: Selenium POI
Dosya IO, herhangi bir yazılım sürecinin kritik bir parçasıdır. Sık sık bir dosya oluştururuz, onu açarız ve bir şeyi güncelleriz veya Bilgisayarlarımızda sileriz. Aynı durum Selenium Otomasyon. Dosyaları işlemek için bir sürece ihtiyacımız var Selenium.
Java bize Dosya İşleme için farklı sınıflar sağlar Selenium. Bu dersimizde nasıl okuyup yazabileceğimizi öğreneceğiz. Excel yardımıyla dosya Java IO paketi ve Apache POI kütüphanesi.
Apache POI girişi Selenium
The Apache POI girişi Selenium selenyum veri odaklı test için yaygın olarak kullanılan bir API'dir. Bu, selenyum veri odaklı test için yaygın olarak kullanılan bir POI kütüphanesidir. Java kullanıcılara manipülasyon için bir API sağlayan Microsoft .xls ve .xlsx gibi belgeler. Kullanıcılar excel dosyalarını kolayca oluşturabilir, değiştirebilir ve okuyabilir/yazabilir. POI, "Zayıf Gizleme Uygulaması" anlamına gelir.
Excel'i dışa aktarma
POI (Maven POM Bağımlılığı) kullanılarak excel dosyası nasıl işlenir?
Excel dosyasını Okumak ve Yazmak için JavaApache çok ünlü bir kütüphane POI'si sağlar. Bu kütüphane her ikisini de okuyup yazabilecek kadar yeteneklidir. XLS ve XLSX Excel'in dosya biçimi.
Okumak XLS dosyalar, bir HSSF uygulama POI kütüphanesi tarafından sağlanır.
Okumak XLSX, XSSF uygulanması POI kütüphane seçim olacak. Bu uygulamaları ayrıntılı olarak inceleyelim.
Projenizde Maven kullanıyorsanız Maven bağımlılığı şu şekilde olacaktır:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
Veya POI kavanozlarının en son sürümünü şuradan indirebilirsiniz: http://poi.apache.org/download.html ve en son zip dosyasını indirin
Bu jar için zip dosyasını indirdiğinizde, onu açmanız ve tüm bu jar'ları projenizin sınıf yoluna eklemeniz gerekir.
POI'de Sınıflar ve Arayüzler
Aşağıda farklı bir liste bulunmaktadır Java Arayüzler ve sınıflar POI okumak için XLS ve XLSX fileto-
- alıştırma kitabı: XSSFWorkbook ve HSSFWorkbook sınıfları bu arayüzü uygular.
- XSSFÇalışma Kitabı: XLSX dosyasının sınıf temsilidir.
- HSSFÇalışma Kitabı: XLS dosyasının sınıf temsilidir.
- yaprak: XSSFSheet ve HSSFSheet sınıfları bu arayüzü uygular.
- XSSF Sayfası: XLSX dosyasındaki bir sayfayı temsil eden sınıftır.
- HSSF Sayfası: XLS dosyasındaki bir sayfayı temsil eden sınıftır.
- Sıra: XSSFRow ve HSSFRow sınıfları bu arayüzü uygular.
- XSSFSatır: XLSX dosyasının sayfasındaki bir satırı temsil eden sınıftır.
- HSSFRow: XLS dosyasının sayfasındaki bir satırı temsil eden sınıftır.
- Hücre: XSSFCell ve HSSFCell sınıfları bu arayüzü uygular.
- XSSFCücre: XLSX dosyasındaki bir satırdaki hücreyi temsil eden sınıftır.
- HSSFCücresi: XLS dosyasının bir satırındaki hücreyi temsil eden bir sınıftır.
Okuma/Yazma işlemi
Örneğimiz için aşağıda verilen Excel dosya formatını ele alacağız.
Excel dosyasındaki verileri okuyun
Tam Örnek: Burada Excel'den veri okumaya çalışıyoruz. 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"); } }
Not: kullanmıyoruz Test çerçeve burada. Sınıfı şu şekilde çalıştır: Java Excel okuma işlevini kullanan uygulama Selenium yukarıdaki örnekte gösterildiği gibi.
Excel dosyasına veri yazma
Tam Örnek: Burada Excel dosyasına yeni satır ekleyerek Excel dosyasından veri yazmaya çalışıyoruz.
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); } }
JXL API'sini kullanarak Excel İşleme
JXL ayrıca Excel dosyasını okumak için başka bir ünlü kavanozdur Java ve dosya yazma. Günümüzde çoğu projede POI kullanılıyor ancak POI'den önce JXL yalnızca Java Excel manipülasyonu için API. Excel'de okumak için çok küçük ve basit bir API'dir. Selenium.
İPUÇLARI: Benim önerim, JXL'i herhangi bir yeni projede kullanmamanızdır çünkü kütüphane 2010'dan beri aktif olarak geliştirilmemektedir ve POI API ile karşılaştırıldığında bu özellik eksiktir.
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ğini de alabilirsiniz.
Bazı özellikler:
- JXL Excel dosyasını okuyabilir Selenium 95, 97, 2000, XP, 2003 çalışma kitabı için.
- İngilizce, Fransızca, İspanyolca, Almanca ile çalışabiliriz.
- Bir Grafik kopyalamak ve Excel'e resim eklemek mümkündür
Dezavantaj:
- Sadece Excel 97 ve sonrasını yazabiliyoruz (Excel 95'te yazma desteklenmiyor).
- JXL, Excel dosyasının XLSX biçimini desteklemez.
- Excel 2000 formatında elektronik tablo oluşturur.
ÖZET
- Excel dosyası tarafından okunabilir Java IO işlemi. Bunun için kullanmamız gerekiyor Apache POI Kavanozu.
- Excel dosyasında iki tür çalışma kitabı vardır; XLSX ve XLS dosyaları.
- POI'nin farklı Arayüzleri Çalışma Kitabı, Sayfa, Satır, Hücre vardır.
- Bu arayüzler ilgili kuruluşlar tarafından uygulanır. XLS (HSSFÇalışma Kitabı, HSSF Sayfası, HSSFRow, HSSFCell) Ve XLSX (XSSFÇalışma Kitabı, XSSFSayfası, XSSFRow, XSSFCell) dosya işleme sınıfları.
- JXL, Excel'in işlenmesi için başka bir API'dir Selenium.
- JXL, Excel'in XLSX formatıyla çalışamaz.