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 ファイルを扱う方法
Excelファイルの読み込みと書き込み JavaApacheは非常に有名なライブラリPOIを提供しています。このライブラリは、 XLS および XLSX Excelのファイル形式です。
読むために XLS ファイル、 HSSF 実装は POI ライブラリによって提供されます。
読むために XLSX、 XSSF の実装 THEN ライブラリ の選択になります。 これらの実装を詳しく調べてみましょう。
プロジェクトで Maven を使用している場合、Maven の依存関係は次のようになります。
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
または、最新バージョンの POI jar を以下からダウンロードすることもできます。 http://poi.apache.org/download.html 最新の zip ファイルをダウンロードします
この jar の zip ファイルをダウンロードしたら、それを解凍し、これらすべての jar をプロジェクトのクラス パスに追加する必要があります。
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 ファイル形式を考慮します。
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 ファイルからデータを書き込もうとしています。
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を使用した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 の 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 形式では動作しません。