Skip to content

Commit d0d25e3

Browse files
committed
Bài 28 - Read Excel file
1 parent 2c52b09 commit d0d25e3

File tree

10 files changed

+276
-1
lines changed

10 files changed

+276
-1
lines changed

pom.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,27 @@
4444
<version>2.0.9</version>
4545
</dependency>
4646

47+
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
48+
<dependency>
49+
<groupId>org.apache.poi</groupId>
50+
<artifactId>poi</artifactId>
51+
<version>5.2.4</version>
52+
</dependency>
53+
54+
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
55+
<dependency>
56+
<groupId>org.apache.poi</groupId>
57+
<artifactId>poi-ooxml</artifactId>
58+
<version>5.2.4</version>
59+
</dependency>
60+
61+
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
62+
<dependency>
63+
<groupId>commons-io</groupId>
64+
<artifactId>commons-io</artifactId>
65+
<version>2.15.0</version>
66+
</dependency>
67+
4768
</dependencies>
4869

4970
</project>
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
package com.anhtester.helpers;
2+
3+
import java.awt.Color;
4+
import java.io.File;
5+
import java.io.FileInputStream;
6+
import java.io.FileOutputStream;
7+
import java.util.HashMap;
8+
import java.util.Map;
9+
10+
import org.apache.poi.ss.usermodel.*;
11+
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
12+
13+
public class ExcelHelper {
14+
15+
private FileInputStream fis;
16+
private FileOutputStream fileOut;
17+
private Workbook wb;
18+
private Sheet sh;
19+
private Cell cell;
20+
private Row row;
21+
private CellStyle cellstyle;
22+
private Color mycolor;
23+
private String excelFilePath;
24+
private Map<String, Integer> columns = new HashMap<>();
25+
26+
public void setExcelFile(String ExcelPath, String SheetName) {
27+
try {
28+
File f = new File(ExcelPath);
29+
30+
if (!f.exists()) {
31+
f.createNewFile();
32+
System.out.println("File doesn't exist, so created!");
33+
}
34+
35+
fis = new FileInputStream(ExcelPath);
36+
wb = WorkbookFactory.create(fis);
37+
sh = wb.getSheet(SheetName);
38+
//sh = wb.getSheetAt(0); //0 - index of 1st sheet
39+
if (sh == null) {
40+
sh = wb.createSheet(SheetName);
41+
}
42+
43+
this.excelFilePath = ExcelPath;
44+
45+
//adding all the column header names to the map 'columns'
46+
sh.getRow(0).forEach(cell -> {
47+
columns.put(cell.getStringCellValue(), cell.getColumnIndex());
48+
});
49+
50+
} catch (Exception e) {
51+
System.out.println(e.getMessage());
52+
}
53+
}
54+
55+
public String getCellData(int colnum, int rownum) {
56+
try {
57+
cell = sh.getRow(rownum).getCell(colnum);
58+
String CellData = null;
59+
switch (cell.getCellType()) {
60+
case STRING:
61+
CellData = cell.getStringCellValue();
62+
break;
63+
case NUMERIC:
64+
if (DateUtil.isCellDateFormatted(cell)) {
65+
CellData = String.valueOf(cell.getDateCellValue());
66+
} else {
67+
CellData = String.valueOf((long) cell.getNumericCellValue());
68+
}
69+
break;
70+
case BOOLEAN:
71+
CellData = Boolean.toString(cell.getBooleanCellValue());
72+
break;
73+
case BLANK:
74+
CellData = "";
75+
break;
76+
}
77+
return CellData;
78+
} catch (Exception e) {
79+
return "";
80+
}
81+
}
82+
83+
//Gọi ra hàm này nè
84+
public String getCellData(String columnName, int rownum) {
85+
return getCellData(columns.get(columnName), rownum);
86+
}
87+
88+
//set by column index
89+
public void setCellData(String text, int colNumber, int rowNumber) {
90+
try {
91+
row = sh.getRow(rowNumber);
92+
if (row == null) {
93+
row = sh.createRow(rowNumber);
94+
}
95+
cell = row.getCell(colNumber);
96+
97+
if (cell == null) {
98+
cell = row.createCell(colNumber);
99+
}
100+
cell.setCellValue(text);
101+
102+
XSSFCellStyle style = (XSSFCellStyle) wb.createCellStyle();
103+
style.setFillPattern(FillPatternType.NO_FILL);
104+
style.setAlignment(HorizontalAlignment.CENTER);
105+
style.setVerticalAlignment(VerticalAlignment.CENTER);
106+
107+
cell.setCellStyle(style);
108+
109+
fileOut = new FileOutputStream(excelFilePath);
110+
wb.write(fileOut);
111+
fileOut.flush();
112+
fileOut.close();
113+
} catch (Exception e) {
114+
e.getMessage();
115+
}
116+
}
117+
118+
//set by column name
119+
public void setCellData(String text, String columnName, int rowNumber) {
120+
try {
121+
row = sh.getRow(rowNumber);
122+
if (row == null) {
123+
row = sh.createRow(rowNumber);
124+
}
125+
cell = row.getCell(columns.get(columnName));
126+
127+
if (cell == null) {
128+
cell = row.createCell(columns.get(columnName));
129+
}
130+
cell.setCellValue(text);
131+
132+
XSSFCellStyle style = (XSSFCellStyle) wb.createCellStyle();
133+
style.setFillPattern(FillPatternType.NO_FILL);
134+
style.setAlignment(HorizontalAlignment.CENTER);
135+
style.setVerticalAlignment(VerticalAlignment.CENTER);
136+
137+
cell.setCellStyle(style);
138+
139+
fileOut = new FileOutputStream(excelFilePath);
140+
wb.write(fileOut);
141+
fileOut.flush();
142+
fileOut.close();
143+
} catch (Exception e) {
144+
e.getMessage();
145+
}
146+
}
147+
148+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.anhtester.Bai28_ReadExcelFile;
2+
3+
import com.anhtester.helpers.ExcelHelper;
4+
import org.testng.annotations.Test;
5+
6+
public class DemoReadExcelFile {
7+
8+
@Test
9+
public void testReadExcelFile(){
10+
//Khởi tạo đối tượng class ExcelHelper
11+
ExcelHelper excelHelper = new ExcelHelper();
12+
13+
//Gọi hàm setExcelFile
14+
excelHelper.setExcelFile("src/test/resources/testdata/UsersData.xlsx", "Sheet1");
15+
16+
//Gọi hàm getCellData để lấy giá trị của từng ô trong excel file
17+
System.out.println(excelHelper.getCellData("email", 1));
18+
System.out.println(excelHelper.getCellData("password", 1));
19+
System.out.println(excelHelper.getCellData(2, 1));
20+
}
21+
22+
@Test
23+
public void testSetDataToExcel(){
24+
ExcelHelper excelHelper = new ExcelHelper();
25+
26+
excelHelper.setExcelFile("src/test/resources/testdata/UsersData.xlsx", "Sheet1");
27+
28+
excelHelper.setCellData("Success", 3, 1);
29+
excelHelper.setCellData("Fail", "status", 2);
30+
31+
}
32+
33+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.anhtester.Bai28_ReadExcelFile;
2+
3+
import com.anhtester.Bai26_CustomDriverParallelExecution.pages.DashboardPage;
4+
import com.anhtester.Bai26_CustomDriverParallelExecution.pages.LoginPage;
5+
import com.anhtester.common.BaseTest;
6+
import com.anhtester.constants.ConfigData;
7+
import com.anhtester.helpers.ExcelHelper;
8+
import com.anhtester.keywords.WebUI;
9+
import org.testng.annotations.Test;
10+
11+
public class LoginTest extends BaseTest {
12+
13+
LoginPage loginPage;
14+
DashboardPage dashboardPage;
15+
16+
@Test
17+
public void testLoginSuccess() {
18+
loginPage = new LoginPage();
19+
20+
ExcelHelper excelHelper = new ExcelHelper();
21+
excelHelper.setExcelFile("src/test/resources/testdata/UsersData.xlsx", "Sheet1");
22+
23+
dashboardPage = loginPage.loginCRM(
24+
excelHelper.getCellData("email", 1),
25+
excelHelper.getCellData("password", 1)
26+
);
27+
loginPage.verifyLoginSuccess();
28+
WebUI.captureScreenImage("testLoginSuccess");
29+
dashboardPage.logOut();
30+
}
31+
32+
@Test
33+
public void testLoginWithEmailInvalid() {
34+
loginPage = new LoginPage();
35+
36+
ExcelHelper excelHelper = new ExcelHelper();
37+
excelHelper.setExcelFile("src/test/resources/testdata/UsersData.xlsx", "Sheet1");
38+
39+
dashboardPage = loginPage.loginCRM(
40+
excelHelper.getCellData("email", 2),
41+
excelHelper.getCellData("password", 2)
42+
);
43+
loginPage.verifyLoginFail();
44+
WebUI.captureScreenImage("testLoginWithEmailInvalid");
45+
}
46+
47+
@Test
48+
public void testLoginWithPasswordInvalid() {
49+
loginPage = new LoginPage();
50+
51+
ExcelHelper excelHelper = new ExcelHelper();
52+
excelHelper.setExcelFile("src/test/resources/testdata/UsersData.xlsx", "Sheet1");
53+
54+
dashboardPage = loginPage.loginCRM(
55+
excelHelper.getCellData("email", 3),
56+
excelHelper.getCellData("password", 3)
57+
);
58+
loginPage.verifyLoginFail();
59+
WebUI.captureScreenImage("testLoginWithPasswordInvalid");
60+
}
61+
}

src/test/java/com/anhtester/common/BaseTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public void beforeSuite(){
1919
@BeforeMethod
2020
@Parameters({"browser"})
2121
public void createDriver(@Optional("chrome") String browserName) {
22-
WebDriver driver = setupBrowser(PropertiesHelper.getValue("browser")); //Khởi tạo loại browser và gán vào driver
22+
WebDriver driver = setupBrowser(browserName); //Khởi tạo loại browser và gán vào driver
2323
//new WebUI(driver);
2424
DriverManager.setDriver(driver); //Mang giá trị driver đã khởi tạo vào trong ThreadLocal
2525
}
Loading
Loading
Loading
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
2+
3+
<suite name="Parallel Suite All" verbose="1">
4+
5+
<test name="Regression Test Parallel" parallel="methods">
6+
<parameter name="browser" value="edge"></parameter>
7+
<classes>
8+
<class name="com.anhtester.Bai28_ReadExcelFile.LoginTest"/>
9+
</classes>
10+
</test>
11+
12+
</suite>
9.47 KB
Binary file not shown.

0 commit comments

Comments
 (0)