Excelファイルからデータを読み書きする方法: Selenium THEN

ファイル IO は、あらゆるソフトウェア プロセスの重要な部分です。私たちは頻繁にファイルを作成したり、ファイルを開いて更新したり、コンピュータ内でファイルを削除したりします。の場合も同様です Selenium オートメーション。ファイルを操作するプロセスが必要です Selenium.

Java ファイル操作のためのさまざまなクラスを提供します Selenium。このチュートリアルでは、どのように読み書きできるかを学びます。 Excel の助けを借りてファイル Java IOパッケージと アパッチ POIライブラリ。

Apache POI で Selenium

XNUMXμmの波長を持つ Apache POI で Selenium は、Seleniumデータ駆動型テストで広く使用されているAPIです。これは、 Java ユーザーに操作用のAPIを提供する Microsoft .xls や .xlsx などのドキュメント。ユーザーは Excel ファイルを簡単に作成、変更、読み取り/書き込みできます。 POI は「Poor Obfuscation Implementation」の略です。

Excelのエクスポート

POI(Maven POM 依存関係)を使用して Excel ファイルを扱う方法

POIを使用したExcelファイルの処理

Excelファイルの読み込みと書き込み JavaApacheは非常に有名なライブラリPOIを提供しています。このライブラリは、 XLS および XLSX Excelのファイル形式です。

読むために XLS ファイル、 HSSF 実装は POI ライブラリによって提供されます。

読むために XLSX、 XSSF の実装 THEN ライブラリ の選択になります。 これらの実装を詳しく調べてみましょう。

プロジェクトで Maven を使用している場合、Maven の依存関係は次のようになります。

POIを使用したExcelファイルの処理

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.1</version>
</dependency>

または、最新バージョンの POI jar を以下からダウンロードすることもできます。 http://poi.apache.org/download.html 最新の zip ファイルをダウンロードします

POIを使用したExcelファイルの処理

この jar の zip ファイルをダウンロードしたら、それを解凍し、これらすべての jar をプロジェクトのクラス パスに追加する必要があります。

POIを使用したExcelファイルの処理

POIのクラスとインターフェース

Apache POIのクラスとインターフェース
Apache POIのクラスとインターフェース

以下はさまざまな Java インターフェースとクラス THEN 読むために XLS および XLSX フィレ-

  • ワークブック: XSSFWorkbook クラスと HSSFWorkbook クラスは、このインターフェイスを実装します。
  • XSSFワークブック: XLSX ファイルのクラス表現です。
  • HSSFワークブック: XLS ファイルのクラス表現です。
  • シート: XSSFSheet クラスと HSSFSheet クラスはこのインターフェイスを実装します。
  • XSSFシート: XLSX ファイル内のシートを表すクラスです。
  • HSSFシート: XLS ファイル内のシートを表すクラスです。
  • : XSSFRow および HSSFRow クラスはこのインターフェイスを実装します。
  • XSSFロウ: XLSX ファイルのシート内の行を表すクラスです。
  • HSSFRow: XLS ファイルのシート内の行を表すクラスです。
  • セル: XSSFCell クラスと HSSFCell クラスはこのインターフェイスを実装します。
  • XSSFセル: XLSX ファイルの行内のセルを表すクラスです。
  • HSSFCell: XLS ファイルの行内のセルを表すクラスです。

読み取り/書き込み操作

この例では、以下の Excel ファイル形式を考慮します。

読み書き Opera生産

Excelファイルからデータを読み取る

完全な例: ここでは Excel からデータを読み取ろうとしています。 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");

    }

}

注: は使用していません。 テスト フレームワークはこちら。クラスを次のように実行します Java Excelの読み取り機能を使用するアプリケーション Selenium 上の例に示すように。

Excelファイルからデータを読み取る

Excelファイルにデータを書き込む

完全な例: ここでは、Excel ファイルに新しい行を追加して、Excel ファイルからデータを書き込もうとしています。

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ファイルにデータを書き込む

JXL APIを使用したExcel操作

JXL APIを使用したExcel操作

JXLはExcelファイルを読むためのもう一つの有名なjarです。 Java ファイルの書き込みと書き込み。現在ではほとんどのプロジェクトでPOIが使用されていますが、POI以前はJXLは Java Excel操作用のAPI。Excelの読み取り用の非常に小さくシンプルなAPIです。 Selenium.

ヒント: JXL は 2010 年以降開発が活発ではなく、POI API に比べて機能が不足しているため、新しいプロジェクトでは JXL を使用しないことをお勧めします。

JXL をダウンロード:

JXL を使用したい場合は、このリンクからダウンロードできます。

https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/

JXL APIを使用したExcel操作

この JXL の zip ファイル内でデモの例を入手することもできます。

いくつかの機能:

  • JXLはExcelファイルを読み取ることができます Selenium 95、97、2000、XP、2003 ワークブック用。
  • 英語、フランス語、スペイン語、ドイツ語で作業できます。
  • Excelへのチャートのコピーや画像挿入が可能

欠点:

  • Excel 97 以降のみ書き込み可能です (Excel 95 での書き込みはサポートされていません)。
  • JXL は Excel ファイルの XLSX 形式をサポートしていません。
  • Excel 2000形式のスプレッドシートを生成します。

製品概要

  • Excelファイルは、 Java IO操作。そのためには、 Apache POI Jar.
  • ExcelファイルにはXNUMX種類のブックがあります。 XLSX および XLS ファイル。
  • POIには、ワークブック、シート、行、セルなどのさまざまなインターフェイスがあります。
  • これらのインターフェイスは、対応するものによって実装されます。 XLS (HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell)と XLSX (XSSFWorkbook、XSSFSheet、XSSFRow、XSSFCell) ファイル操作クラス。
  • JXL は、Excel で処理するための別の API です。 Selenium.
  • JXL は Excel の XLSX 形式では動作しません。