Excelデータの読み書き方法 Selenium Apache POI を使用する
⚡ スマートサマリー
Excel ファイルのドライブ Selenium データ駆動型テスト、そしてApache POIは Java ファイルの読み書きを行うライブラリです。以下のセクションでは、依存関係、コアクラス、読み書きの例、およびJXLについて説明します。

ファイル IO は、あらゆるソフトウェア プロセスの重要な部分です。私たちは頻繁にファイルを作成したり、ファイルを開いて更新したり、コンピュータ内でファイルを削除したりします。の場合も同様です Selenium オートメーション。ファイルを操作するプロセスが必要です Selenium.
Java ファイル操作のためのさまざまなクラスを提供します Selenium。このチュートリアルでは、どのように読み書きできるかを学びます。 Excel の助けを借りてファイル Java IOパッケージと アパッチ POIライブラリ。
Apache POI で Selenium
その Apache POI で Selenium は広く使用されているAPIです Selenium データ駆動型テストこれは、POIライブラリです。 Java ユーザーに操作用のAPIを提供する Microsoft .xls や .xlsx などのドキュメント。ユーザーは Excel ファイルを簡単に作成、変更、読み書きできます。POI は「Poor Obfuscation Implementation(不十分な難読化実装)」の略です。
POI(Maven POM依存関係)を使用してExcelファイルを処理する方法
POIリンク Selenium 以下のワークブックでテストを行ってください。
Excelファイルの読み込みと書き込み JavaApacheは非常に有名なライブラリであるPOIを提供しています。このライブラリは、ExcelのXLSファイル形式とXLSXファイル形式の両方を読み書きするのに十分な機能を備えています。
XLSファイルを読み込むために、POIライブラリにはHSSFの実装が提供されています。
XLSXファイルを読み込むには、POIライブラリのXSSF実装が適しています。これらの実装について詳しく見ていきましょう。
プロジェクトでMavenを使用している場合、以下に示すように、Mavenの依存関係がpom.xmlに追加されます。
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency>
バージョンノート: 4.1.1 は元の例です。現在のプロジェクトでは、 poi-ooxml XLSXに必要なバージョン5.5.1。
または、最新バージョンの POI jar を以下からダウンロードすることもできます。 http://poi.apache.org/download.html 最新の zip ファイルをダウンロードします
この jar の zip ファイルをダウンロードしたら、それを解凍し、これらすべての jar をプロジェクトのクラス パスに追加する必要があります。
POIのクラスとインターフェース
以下はさまざまな Java POIにおけるXLSおよびXLSXファイル読み取り用のインターフェースとクラスを以下に示します。
- ワークブック: XSSFWorkbook クラスと HSSFWorkbook クラスはこのインターフェースを実装しています。
- XSSFワークブック: XLSXファイルのクラス表現です。
- HSSFワークブック: XLSファイルのクラス表現です。
- シート: XSSFSheet クラスと HSSFSheet クラスはこのインターフェースを実装しています。
- XSSFシート: XLSXファイル内のシートを表すクラスです。
- HSSFシート: これは、XLSファイル内のシートを表すクラスです。
- 行: XSSFRowクラスとHSSFRowクラスはこのインターフェースを実装しています。
- XSSFRow: XLSXファイルのシート内の行を表すクラスです。
- HSSFRow: これは、XLSファイルのシート内の行を表すクラスです。
- セル: XSSFCell クラスと HSSFCell クラスはこのインターフェースを実装しています。
- XSSFCell: XLSXファイルの行内のセルを表すクラスです。
- HSSFCell: XLS ファイルの行内のセルを表すクラスです。
読み書き Opera生産
この例では、以下の 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"); } }
注意: 私たちは TestNG フレームワークはこちら。クラスを次のように実行します 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年以降活発に開発されておらず(2.6.12が最新リリース)、POI APIと比較して機能が不足しているからです。
JXL をダウンロード:
JXL を使用したい場合は、このリンクからダウンロードできます。
https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
この圧縮ファイル内には、JXL のデモ例も含まれています。trac以下に、ted の内容を示します。
いくつかの機能:
- JXLはExcelファイルを読み取ることができます Selenium 95、97、2000、XP、2003 ワークブック用。
- 英語、フランス語、スペイン語、ドイツ語で作業できます。
- Excelへのチャートのコピーや画像挿入が可能
欠点:
- Excel 97 以降のみ書き込み可能です (Excel 95 での書き込みはサポートされていません)。
- JXL は Excel ファイルの XLSX 形式をサポートしていません。
- Excel 2000形式のスプレッドシートを生成します。










