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?

POI Kullanarak Excel Dosyasını Yönetme

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:

POI Kullanarak Excel Dosyasını Yönetme

<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

POI Kullanarak Excel Dosyasını Yönetme

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 Kullanarak Excel Dosyasını Yönetme

POI'de Sınıflar ve Arayüzler

Apache POI'de Sınıflar ve Arayüzler
Apache 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.

Okunur Operayon

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ından Veri Okuma

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);

    }

}

Excel Dosyasına Veri Yazma

JXL API'sini kullanarak Excel İşleme

JXL API 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 API Kullanarak Excel İşleme

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.