파일 IO는 모든 소프트웨어 프로세스의 중요한 부분입니다. 우리는 종종 컴퓨터에서 파일을 만들고 열거 나 업데이트하거나 삭제합니다. Selenium Automation도 마찬가지입니다. Selenium을 사용하여 파일을 조작하는 프로세스가 필요합니다.
Java는 Selenium을 사용하여 File Manipulation을위한 다양한 클래스를 제공합니다. 이 튜토리얼에서는 Java IO 패키지 및 Apache POI 라이브러리를 사용하여 Excel 파일을 읽고 쓰는 방법을 배웁니다 .
Excel 내보내기
- POI를 사용하여 파일을 처리하는 방법 (Maven POM Dependency)
엑셀을 읽거나 쓰려면 Apache는 매우 유명한 POI 라이브러리를 제공합니다. 이 라이브러리는 Excel의 XLS 및 XLSX 파일 형식 을 읽고 쓸 수 있습니다 .
XLS 파일 을 읽으려면 HSSF 구현이 POI 라이브러리에 의해 제공됩니다.
XLSX 를 읽으려면 POI 라이브러리 의 XSSF 구현이 선택됩니다. 이러한 구현을 자세히 살펴 보겠습니다.
프로젝트에서 Maven을 사용하고 있다면, Maven 의존성은
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
또는 http://poi.apache.org/download.html 에서 최신 버전의 POI jar를 다운로드하고 최신 zip 파일을 다운로드 할 수 있습니다.
이 jar에 대한 zip 파일을 다운로드 할 때 압축을 풀고이 jar 파일을 프로젝트의 클래스 경로에 추가해야합니다.
POI의 클래스와 인터페이스 :
다음은 XLS 및 XLSX 파일 읽기를위한 POI 의 다양한 Java 인터페이스 및 클래스 목록입니다.
- Workbook : XSSFWorkbook 및 HSSFWorkbook 클래스가이 인터페이스를 구현합니다.
- XSSFWorkbook : XLSX 파일의 클래스 표현입니다.
- HSSFWorkbook : XLS 파일의 클래스 표현입니다.
- Sheet : XSSFSheet 및 HSSFSheet 클래스가이 인터페이스를 구현합니다.
- XSSFSheet : XLSX 파일의 시트를 나타내는 클래스입니다.
- HSSFSheet : XLS 파일의 시트를 나타내는 클래스입니다.
- Row : XSSFRow 및 HSSFRow 클래스가이 인터페이스를 구현합니다.
- XSSFRow : XLSX 파일의 시트에있는 행을 나타내는 클래스입니다.
- HSSFRow : XLS 파일 시트에있는 행을 나타내는 클래스입니다.
- Cell : XSSFCell 및 HSSFCell 클래스가이 인터페이스를 구현합니다.
- XSSFCell : XLSX 파일의 행에있는 셀을 나타내는 클래스입니다.
- HSSFCell : XLS 파일의 행에있는 셀을 나타내는 클래스입니다.
읽기 / 쓰기 작업 -
여기서는 Excel 파일 형식을 고려합니다.
Excel 파일에서 데이터 읽기
완전한 예 : 여기서 우리는 Excel 파일에서 데이터를 읽으려고합니다.
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{
// xlsx 파일을 열려면 File 클래스의 객체를 만듭니다.
File file = new File(filePath+"\\"+fileName);
// 엑셀 파일을 읽을 FileInputStream 클래스의 객체를 만듭니다.
FileInputStream inputStream = new FileInputStream(file);
Workbook guru99Workbook = null;
// 하위 문자열에서 파일 이름을 분리하고 확장명 만 가져와 파일 확장명을 찾습니다.
String fileExtensionName = fileName.substring(fileName.indexOf("."));
// 파일이 xls 파일인지 확인합니다.
if(fileExtensionName.equals(".xlsx")){
// xlsx 파일이면 XSSFWorkbook 클래스의 객체를 만듭니다.
guru99Workbook = new XSSFWorkbook(inputStream);
}
//Check condition if the file is xls file
else if(fileExtensionName.equals(".xls")){
// xls 파일이면 XSSFWorkbook 클래스의 객체를 만듭니다.
guru99Workbook = new HSSFWorkbook(inputStream);
}
// 통합 문서 안의 시트를 이름으로 읽습니다.
Sheet guru99Sheet = guru99Workbook.getSheet(sheetName);
// Excel 파일에서 행 수 찾기
int rowCount = guru99Sheet.getLastRowNum()-guru99Sheet.getFirstRowNum();
// 엑셀 파일의 모든 행에 루프를 작성하여 읽습니다.
for (int i = 0; i < rowCount+1; i++) {
Row row = guru99Sheet.getRow(i);
// 행의 셀 값을 인쇄하는 루프를 만듭니다.
for (int j = 0; j < row.getLastCellNum(); j++) {
// 콘솔에서 Excel 데이터를 인쇄합니다.
System.out.print(row.getCell(j).getStringCellValue()+"|| ");
}
System.out.println();
}
}
// 주요 함수는 readExcel 함수를 호출하여 Excel 파일에서 데이터를 읽습니다.
public static void main(String...strings) throws IOException{
// ReadGuru99ExcelFile 클래스의 객체를 만듭니다.
ReadGuru99ExcelFile objExcelFile = new ReadGuru99ExcelFile();
// Excel 파일의 경로를 준비합니다.
String filePath = System.getProperty("user.dir")+"\\src\\excelExportAndFileIO";
// 클래스의 파일 읽기 메소드를 호출하여 데이터를 읽습니다.
objExcelFile.readExcel(filePath,"ExportExcel.xlsx","ExcelGuru99Demo");
}
}
참고 : 여기서는 Testng 프레임 워크를 사용하지 않습니다 . Java 응용 프로그램으로 클래스 실행
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{
// xlsx 파일을 열려면 File 클래스의 객체를 만듭니다.
File file = new File(filePath+"\\"+fileName);
// 엑셀 파일을 읽을 FileInputStream 클래스의 객체를 만듭니다.
FileInputStream inputStream = new FileInputStream(file);
Workbook guru99Workbook = null;
// 하위 문자열에서 파일 이름을 분리하고 확장명 만 가져와 파일 확장명을 찾습니다.
String fileExtensionName = fileName.substring(fileName.indexOf("."));
// 파일이 xlsx 파일인지 확인합니다.
if(fileExtensionName.equals(".xlsx")){
// xlsx 파일이면 XSSFWorkbook 클래스의 객체를 만듭니다.
guru99Workbook = new XSSFWorkbook(inputStream);
}
else if(fileExtensionName.equals(".xls")){
// xls 파일이면 XSSFWorkbook 클래스의 객체를 만듭니다.
guru99Workbook = new HSSFWorkbook(inputStream);
}
// 시트 이름으로 시트 읽기
Sheet sheet = guru99Workbook.getSheet(sheetName);
// Excel 파일의 현재 행 수를 가져옵니다.
int rowCount = sheet.getLastRowNum()-sheet.getFirstRowNum();
// 시트에서 첫 번째 행 가져 오기
Row row = sheet.getRow(0);
// 새 행을 만들고 마지막 행에 추가합니다.
Row newRow = sheet.createRow(rowCount+1);
// 새로 생성 된 Row의 셀 위에 루프를 만듭니다.
for(int j = 0; j < row.getLastCellNum(); j++){
// 행으로 데이터 채우기
Cell cell = newRow.createCell(j);
cell.setCellValue(dataToWrite[j]);
}
// 입력 스트림을 닫습니다.
inputStream.close();
// FileOutputStream 클래스의 객체를 생성하여 Excel 데이터에 쓰기 데이터를 만듭니다.
FileOutputStream outputStream = new FileOutputStream(file);
// 엑셀 파일에 데이터 쓰기
guru99Workbook.write(outputStream);
// 출력 스트림을 닫습니다.
outputStream.close();
}
public static void main(String...strings) throws IOException{
// Excel 파일에 채울 것으로 예상되는 순서와 동일한 순서로 데이터로 배열을 만듭니다.
String[] valueToWrite = {"Mr. E","Noida"};
// 현재 클래스의 객체 만들기
WriteGuru99ExcelFile objExcelFile = new WriteGuru99ExcelFile();
// 파일 이름, 시트 이름 및 채울 데이터를 사용하여 파일을 작성합니다.
objExcelFile.writeExcel(System.getProperty("user.dir")+"\\src\\excelExportAndFileIO","ExportExcel.xlsx","ExcelGuru99Demo",valueToWrite);
}
}
JXL API를 사용한 Excel 조작
JXL은 또한 Excel 파일을 쓰는 독서의 또 다른 유명한 항아리입니다. 이제 하루 POI가 대부분의 프로젝트에서 사용되었지만 POI 이전에는 JXL이 Excel 조작 용 Java API 만 사용했습니다. 매우 작고 간단한 API입니다.
팁 : 2010 년부터 라이브러리가 활발히 개발되지 않았고 POI API와 비교하여 기능이 부족하기 때문에 새 프로젝트에서 JXL을 사용하지 않는 것이 좋습니다.
JXL 다운로드 :
JXL로 작업하려면이 링크에서 다운로드하십시오.
http://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/
또한 JXL 용 압축 파일 내부에서 데모 예제를 볼 수 있습니다.
일부 기능 :
- JXL은 Excel 95, 97, 2000, XP, 2003 통합 문서를 읽을 수 있습니다.
- 우리는 영어, 프랑스어, 스페인어, 독일어로 작업 할 수 있습니다.
- Excel에서 차트 및 이미지 삽입 복사 가능
약점:
- 우리는 Excel 97 및 이후 버전 만 작성할 수 있습니다 (Excel 95 작성은 지원되지 않습니다).
- JXL은 XLSX 형식의 Excel 파일을 지원하지 않습니다.
- Excel 2000 형식의 스프레드 시트를 생성합니다.
개요:
- Excel 파일은 Java IO 작업으로 읽을 수 있습니다. 이를 위해서는 Apache POI Jar 를 사용해야 합니다.
- Excel 파일에는 XLSX 및 XLS 파일 의 두 가지 통합 문서가 있습니다.
- POI는 인터페이스 통합 문서, 시트, 행, 셀이 다릅니다.
- 이러한 인터페이스는 해당 XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) 및 XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ) 파일 조작 클래스로 구현됩니다.
- JXL은 Excel 조작을위한 또 다른 API입니다.
- JXL은 XLSX 형식의 Excel에서는 작동하지 않습니다.
'자동화테스트 > Selenium' 카테고리의 다른 글
Selenium Grid Tutorial : 명령 행 및 JSON 예제 (0) | 2018.12.07 |
---|---|
Selenium의 Page Object Model (POM) 및 페이지 팩토리 : 전체 자습서 (0) | 2018.12.06 |
TestNG : Selenium에서 XML 및 DataProvider를 사용하여 매개 변수화 (0) | 2018.12.04 |
(selenium) 암시 적 대기 및 명시적인 셀레니움 대기 (0) | 2018.12.03 |
XPath에는 Selenium WebDriver의 형제, 조상 함수가 포함 (0) | 2018.12.02 |