如何在java中使用selenium webdriver中的apache poi在excel文件中创build新工作表

我正在使用selenium webdriver – Java。
我需要将testing用例的结果写入excel文件,我使用了Apache POI.I成功地创build了一个excel文件,并将testing用例“Registration”的结果写入其中。 现在我想将testing用例“login”的结果写入同一个Excel文件中的另一个工作表。 我如何添加一个新的工作表到我的Excel文件,并在其中写入? 我会更清楚地解释。 我有3个类: QZO.javaQZO_Registration.javaQZO-Login.java 。 – QZO_Registration.java包含不同的注册testing用例。 – QZO_Login包含不同的Logintesting用例。 – QZO.java包含一些QZO_Registration和QZO_Login常用的函数。 – QZO.java包含用于在课堂上创build2张的代码
sheet1 = workbook.createSheet(“TestResult_Registration”); sheet2 = workbook.createSheet("TestResult_Registration"); 当我运行类QZO_Registration一个Excel文件创build2张TestResult_Registration和TestResult_Login。 注册testing用例的结果写在TestResult_Registration表单中。 但是,当我运行类QZO_Login,工作表TestResult_Registration中的值被清除

QZO_Registration.java

 package User; import java.io.IOException; import junit.framework.Assert; import jxl.read.biff.BiffException; import org.openqa.selenium.WebElement; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; @SuppressWarnings("deprecation") public class QZO_Registration extends QZO { @BeforeTest public void beforeTest() throws BiffException, IOException,InterruptedException { openBrowser(1); input(properties.getProperty("VAR_REGISTRATIONDETAILS")); } /* Registration without entering email */ @Test(priority = 0) public void registrationWithoutEmail() throws InterruptedException { try { int emptyEmailRowNumber = 1; WebElement registration = webElement("VAR_REGISTRATION"); registration.click(); Thread.sleep(1000); WebElement email = webElement("VAR_REGISTRATION_EMAIL"); email.clear(); email.sendKeys(getCellContent(0, emptyEmailRowNumber)); Thread.sleep(1000); WebElement username = webElement("VAR_REGISTRATION_USERNAME"); username.clear(); username.sendKeys(getCellContent(1, emptyEmailRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_REGISTRATION_PASSWORD"); password.clear(); password.sendKeys(getCellContent(2, emptyEmailRowNumber)); Thread.sleep(1000); WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD"); confirmPassword.clear(); confirmPassword.sendKeys(getCellContent(3, emptyEmailRowNumber)); Thread.sleep(1000); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(1000); WebElement errorText = webElement("VAR_ERRORTEXT"); String message = errorText.getText(); Assert.assertEquals("Error! Please enter email", message); testresultdata.put("2", new Object[] { 1d, "Registration","Registration without entering email","Should show an error message","An error message is shown", "Pass" }); } catch (Exception e) { testresultdata.put("2", new Object[] { 1d, "Registration","Registration without entering email","Should show an error message","Error message is not shown", "Fail" }); } } /* Registration without entering username */ @Test(priority = 1) public void registrationWithoutUsername() throws InterruptedException { try { int emptyUsernameRowNumber = 2; WebElement registration = webElement("VAR_REGISTRATION"); registration.click(); Thread.sleep(1000); WebElement email = webElement("VAR_REGISTRATION_EMAIL"); email.clear(); email.sendKeys(getCellContent(0, emptyUsernameRowNumber)); Thread.sleep(1000); WebElement username = webElement("VAR_REGISTRATION_USERNAME"); username.clear(); username.sendKeys(getCellContent(1, emptyUsernameRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_REGISTRATION_PASSWORD"); password.clear(); password.sendKeys(getCellContent(2, emptyUsernameRowNumber)); Thread.sleep(1000); WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD"); confirmPassword.clear(); confirmPassword.sendKeys(getCellContent(3, emptyUsernameRowNumber)); Thread.sleep(1000); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(1000); WebElement errorText = webElement("VAR_ERRORTEXT"); String message = errorText.getText(); Assert.assertEquals("Error! Enter username", message); testresultdata.put("3", new Object[] { 2d, "Registration","Registration without entering username","Should show an error message","An error message is shown", "Pass" }); } catch (Exception e) { testresultdata.put("3", new Object[] { 2d, "Registration","Registration without entering username","Should show an error message","Error message is not shown", "Fail" }); }} /* Registration without entering password */ @Test(priority = 2) public void registrationWithoutPassword() throws InterruptedException { try { int emptyPasswordRowNumber = 3; WebElement registration = webElement("VAR_REGISTRATION"); registration.click(); Thread.sleep(1000); WebElement email = webElement("VAR_REGISTRATION_EMAIL"); email.clear(); email.sendKeys(getCellContent(0, emptyPasswordRowNumber)); Thread.sleep(1000); WebElement username = webElement("VAR_REGISTRATION_USERNAME"); username.clear(); username.sendKeys(getCellContent(1, emptyPasswordRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_REGISTRATION_PASSWORD"); password.clear(); password.sendKeys(getCellContent(2, emptyPasswordRowNumber)); Thread.sleep(1000); WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD"); confirmPassword.clear(); confirmPassword.sendKeys(getCellContent(3, emptyPasswordRowNumber)); Thread.sleep(1000); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(1000); WebElement errorText = webElement("VAR_ERRORTEXT"); String message = errorText.getText(); Assert.assertEquals("Error! Enter password", message); testresultdata.put("4", new Object[] { 3d, "Registration","Registration without entering password","Should show an error message","An error message is shown", "Pass" }); } catch (Exception e) { testresultdata.put("4", new Object[] { 3d, "Registration","Registration without entering password","Should show an error message","Error message is not shown", "Fail" }); } } /* Registration without entering confirmpassword */ @Test(priority = 3) public void registrationWithoutConfirmPassword()throws InterruptedException { try { int emptyConfirmPasswordRowNumber = 4; WebElement registration = webElement("VAR_REGISTRATION"); registration.click(); Thread.sleep(1000); WebElement email = webElement("VAR_REGISTRATION_EMAIL"); email.clear(); email.sendKeys(getCellContent(0, emptyConfirmPasswordRowNumber)); Thread.sleep(1000); WebElement username = webElement("VAR_REGISTRATION_USERNAME"); username.clear(); username.sendKeys(getCellContent(1, emptyConfirmPasswordRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_REGISTRATION_PASSWORD"); password.clear(); password.sendKeys(getCellContent(2, emptyConfirmPasswordRowNumber)); Thread.sleep(1000); WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD"); confirmPassword.clear(); confirmPassword.sendKeys(getCellContent(3,emptyConfirmPasswordRowNumber)); Thread.sleep(1000); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(1000); WebElement errorText = webElement("VAR_ERRORTEXT"); String message = errorText.getText(); Assert.assertEquals("Error! Enter confirm password", message); testresultdata.put("5", new Object[] { 4d, "Registration","Registration without entering confirm password","Should show an error message","An error message is shown", "Pass" }); } catch (Exception e) { testresultdata.put("5", new Object[] { 4d, "Registration","Registration without entering confirm password","Should show an error message","Error message is not shown", "Fail" }); }} /* Registration with existing email */ @Test(priority = 4) public void registrationWithExistingEmail() throws InterruptedException { try { int emptyExistingEmailRowNumber = 5; WebElement registration = webElement("VAR_REGISTRATION"); registration.click(); Thread.sleep(1000); WebElement email = webElement("VAR_REGISTRATION_EMAIL"); email.clear(); email.sendKeys(getCellContent(0, emptyExistingEmailRowNumber)); Thread.sleep(1000); WebElement username = webElement("VAR_REGISTRATION_USERNAME"); username.clear(); username.sendKeys(getCellContent(1, emptyExistingEmailRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_REGISTRATION_PASSWORD"); password.clear(); password.sendKeys(getCellContent(2, emptyExistingEmailRowNumber)); Thread.sleep(1000); WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD"); confirmPassword.clear(); confirmPassword.sendKeys(getCellContent(3,emptyExistingEmailRowNumber)); Thread.sleep(1000); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(1000); WebElement errorText = webElement("VAR_ERRORTEXT"); String message = errorText.getText(); Assert.assertEquals("Error! Email already exists", message); testresultdata.put("6", new Object[] { 5d, "Registration","Registration with existing email","Should show an error message","An error message is shown", "Pass" }); } catch (Exception e) { testresultdata.put("6", new Object[] { 5d, "Registration","Registration with existing email","Should show an error message","Error message is not shown", "Fail" }); } } /* Registration with existing username */ @Test(priority = 5) public void registrationWithExistingUsername() throws InterruptedException { try { int emptyExistingUsernameRowNumber = 6; WebElement registration = webElement("VAR_REGISTRATION"); registration.click(); Thread.sleep(1000); WebElement email = webElement("VAR_REGISTRATION_EMAIL"); email.clear(); email.sendKeys(getCellContent(0, emptyExistingUsernameRowNumber)); Thread.sleep(1000); WebElement username = webElement("VAR_REGISTRATION_USERNAME"); username.clear(); username.sendKeys(getCellContent(1, emptyExistingUsernameRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_REGISTRATION_PASSWORD"); password.clear(); password.sendKeys(getCellContent(2, emptyExistingUsernameRowNumber)); Thread.sleep(1000); WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD"); confirmPassword.clear(); confirmPassword.sendKeys(getCellContent(3,emptyExistingUsernameRowNumber)); Thread.sleep(1000); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(1000); WebElement errorText = webElement("VAR_ERRORTEXT"); String message = errorText.getText(); Assert.assertEquals("Error! Username already exists", message); testresultdata.put("7", new Object[] { 6d, "Registration","Registration with existing username","Should show an error message","An error message is shown", "Pass" }); } catch (Exception e) { testresultdata.put("7", new Object[] { 6d, "Registration","Registration with existing username","Should show an error message","Error message is not shown", "Fail" }); } } /* Registration with password and confirm password are different */ @Test(priority = 6) public void registrationWithPasswordMismatch() throws InterruptedException { try { int passwordMismatchRowNumber = 7; WebElement registration = webElement("VAR_REGISTRATION"); registration.click(); Thread.sleep(1000); WebElement email = webElement("VAR_REGISTRATION_EMAIL"); email.clear(); email.sendKeys(getCellContent(0, passwordMismatchRowNumber)); Thread.sleep(1000); WebElement username = webElement("VAR_REGISTRATION_USERNAME"); username.clear(); username.sendKeys(getCellContent(1, passwordMismatchRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_REGISTRATION_PASSWORD"); password.clear(); password.sendKeys(getCellContent(2, passwordMismatchRowNumber)); Thread.sleep(1000); WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD"); confirmPassword.clear(); confirmPassword.sendKeys(getCellContent(3,passwordMismatchRowNumber)); Thread.sleep(1000); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(1000); WebElement errorText = webElement("VAR_ERRORTEXT"); String message = errorText.getText(); Assert.assertEquals("Error! Password and confirm password must match!", message); testresultdata.put("8",new Object[] {7d,"Registration","Registration with different password and confirm password","Should show an error message","An error message is shown", "Pass" }); } catch (Exception e) { testresultdata.put("8",new Object[] {7d,"Registration","Registration with different password and confirm password","Should show an error message","Error message is not shown", "Fail" }); } } /* Successfull Registration */ @Test(priority = 7) public void registrationSuccess() throws InterruptedException { try { int successfullRegistrationRowNumber = 8; WebElement registration = webElement("VAR_REGISTRATION"); registration.click(); Thread.sleep(1000); WebElement email = webElement("VAR_REGISTRATION_EMAIL"); email.clear(); email.sendKeys(getCellContent(0, successfullRegistrationRowNumber)); Thread.sleep(1000); WebElement username = webElement("VAR_REGISTRATION_USERNAME"); username.clear(); username.sendKeys(getCellContent(1,successfullRegistrationRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_REGISTRATION_PASSWORD"); password.clear(); password.sendKeys(getCellContent(2,successfullRegistrationRowNumber)); Thread.sleep(1000); WebElement confirmPassword = webElement("VAR_REGISTRATION_CONFIRMPASSWORD"); confirmPassword.clear(); confirmPassword.sendKeys(getCellContent(3,successfullRegistrationRowNumber)); Thread.sleep(1000); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(1000); WebElement successMessage = webElement("VAR_SUCCESSMESSAGE"); String message = successMessage.getText(); Assert.assertEquals("Registration successful", message); Thread.sleep(1000); WebElement okbutton = webElement("VAR_REGISTRATION_OKBUTTON"); okbutton.click(); testresultdata.put("9", new Object[] { 8d, "Registration","Successfull registration","User should be successfully registered","User is successfully registered", "Pass" }); } catch (Exception e) { testresultdata.put("9", new Object[] { 8d, "Registration","Successfull registration", "Should show an error message","Error message is not shown", "Fail" }); } } @AfterTest public void afterTest() throws InterruptedException, BiffException, IOException { closeBrowser(); } } 

QZO_Login.java

 package User; import java.io.IOException; import junit.framework.Assert; import jxl.read.biff.BiffException; import org.openqa.selenium.WebElement; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; @SuppressWarnings("deprecation") public class QZO_login extends QZO { @BeforeTest public void beforeTest() throws BiffException, IOException,InterruptedException { openBrowser(2); input(properties.getProperty("VAR_LOGINDETAILS")); } /* Login without entering username */ @Test(priority = 0) public void loginWithoutUsername() throws InterruptedException { try { int emptyUsernameRowNumber = 1; WebElement login = webElement("VAR_LOGIN"); login.click(); Thread.sleep(1000); WebElement username = webElement("VAR_USERNAME"); username.clear(); username.sendKeys(getCellContent(0, emptyUsernameRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_PASSWORD"); password.sendKeys(getCellContent(1, emptyUsernameRowNumber)); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(2000); WebElement errorText = webElement("VAR_ERRORTEXT"); String message = errorText.getText(); Assert.assertEquals("Error! Please enter email!", message); testresultdata.put("10", new Object[] { 9d, "Login","Login without username", "Should show an error message","An error message is shown", "Pass" }); } catch (Exception e) { testresultdata.put("10", new Object[] { 9d, "Login","Login without username", "Should show an error message","Error message is not shown", "Fail" }); }} /* Login without entering password */ @Test(priority = 1) public void loginWithoutPassword() throws InterruptedException { try { int emptyPasswordRowNumber = 2; WebElement login = webElement("VAR_LOGIN"); login.click(); Thread.sleep(1000); WebElement username = webElement("VAR_USERNAME"); username.clear(); username.sendKeys(getCellContent(0, emptyPasswordRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_PASSWORD"); password.clear(); password.sendKeys(getCellContent(1, emptyPasswordRowNumber)); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(2000); WebElement errorText = webElement("VAR_ERRORTEXT"); String message = errorText.getText(); Assert.assertEquals("Error! Please enter password!", message); testresultdata.put("11", new Object[] { 10d, "Login","Login without password", "Should show an error message","An error message is shown", "Pass" }); } catch (Exception e) { testresultdata.put("11", new Object[] { 10d, "Login","Login without password", "Should show an error message","Error message is not shown", "Fail" }); }} /* Login with wrong password */ @Test(priority = 2) public void loginWithWrongPassword() throws InterruptedException { try { int wrongPasswordRowNumber = 3; WebElement login = webElement("VAR_LOGIN"); login.click(); Thread.sleep(1000); WebElement username = webElement("VAR_USERNAME"); username.clear(); username.sendKeys(getCellContent(0, wrongPasswordRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_PASSWORD"); password.clear(); password.sendKeys(getCellContent(1, wrongPasswordRowNumber)); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(2000); WebElement errorText = webElement("VAR_ERRORTEXT"); String message = errorText.getText(); Assert.assertEquals("Sorry.. Please check your email or password.!", message); testresultdata.put("12", new Object[] { 11d, "Login","Login with wrong username","Should show an error message","An error message is shown", "Pass" }); } catch (Exception e) { testresultdata.put("12", new Object[] { 11d, "Login","Login with wrong username","Should show an error message","Error message is not shown", "Fail" }); } } /* Login with wrong username */ @Test(priority = 3) public void loginWithWrongUsername() throws InterruptedException { try { int wrongPasswordRowNumber = 4; WebElement login = webElement("VAR_LOGIN"); login.click(); Thread.sleep(1000); WebElement username = webElement("VAR_USERNAME"); username.clear(); username.sendKeys(getCellContent(0, wrongPasswordRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_PASSWORD"); password.clear(); password.sendKeys(getCellContent(1, wrongPasswordRowNumber)); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(2000); WebElement errorText = webElement("VAR_ERRORTEXT"); String message = errorText.getText(); Assert.assertEquals("Sorry.. Please check your email or password.!", message); testresultdata.put("13", new Object[] { 12d, "Login","Login with wrong password","Should show an error message","An error message is shown", "Pass" }); } catch (Exception e) { testresultdata.put("13", new Object[] { 12d, "Login","Login with wrong password","Should show an error message","Error message is not shown", "Fail" }); } } /* Login without clicking on the activation link */ @Test(priority = 4) public void loginWithoutActivation() throws InterruptedException { try { int wrongUsernameRowNumber = 5; WebElement login = webElement("VAR_LOGIN"); login.click(); Thread.sleep(1000); WebElement username = webElement("VAR_USERNAME"); username.clear(); username.sendKeys(getCellContent(0, wrongUsernameRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_PASSWORD"); password.clear(); password.sendKeys(getCellContent(1, wrongUsernameRowNumber)); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(2000); WebElement errorText = webElement("VAR_ERRORTEXT1"); String message = errorText.getText(); Assert.assertEquals("Registration not completed !", message); WebElement okButton = webElement("VAR_OKBUTTON"); okButton.click(); testresultdata.put("14", new Object[] { 13d, "Login","Login without activation", "Should show an error message","An error message is shown", "Pass" }); } catch (Exception e) { testresultdata.put("14", new Object[] { 13d, "Login","Login without activation", "Should show an error message","Error message is not shown", "Fail" }); } } /* Successful Login */ @Test(priority = 5) public void loginSuccess() throws InterruptedException { try { int successRowNumber = 6; WebElement login = webElement("VAR_LOGIN"); login.click(); Thread.sleep(1000); WebElement username = webElement("VAR_USERNAME"); username.clear(); username.sendKeys(getCellContent(0, successRowNumber)); Thread.sleep(1000); WebElement password = webElement("VAR_PASSWORD"); password.clear(); password.sendKeys(getCellContent(1, successRowNumber)); WebElement continueButton = webElement("VAR_CONTINUE"); continueButton.click(); Thread.sleep(2000); String currentURL = driver.getCurrentUrl(); Assert.assertEquals(currentURL,"http://mqdemostaging.azurewebsites.net/Dashboard"); testresultdata.put("15",new Object[] {14d,"Login","Successfull Login","User should be successfully logged in to the application","User is successfully logged in to the application","Pass" }); } catch (Exception e) { testresultdata.put("15", new Object[] { 14d, "Login","Successfull Login", "Should show an error message","Error message is shown", "Fail" }); } } @AfterTest public void afterTest() throws InterruptedException, BiffException, IOException { closeBrowser(); }} 

QZO.java

包用户;

 import java.awt.AWTException; import java.awt.Robot; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; import java.util.Properties; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.openqa.selenium.By; import org.openqa.selenium.Point; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.interactions.Action; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.support.ui.Select; public class QZO { WebDriver driver; WebDriver tempDriver; protected Properties properties; private final String PROPERTY_FILE_NAME = "constant.properties"; private Sheet excelSheet; HSSFWorkbook workbook; HSSFSheet sheet; Map<String, Object[]> testresultdata; int rowNumber=1; public QZO() { properties = new Properties(); try { InputStream inputStream = getClass().getClassLoader() .getResourceAsStream(PROPERTY_FILE_NAME); if (null != inputStream) { properties.load(inputStream); } } catch (IOException e) { e.printStackTrace(); } } public int openBrowser(int value) throws BiffException, IOException,InterruptedException { input(properties.getProperty("VAR_SHEETS")); System.setProperty("webdriver.chrome.driver","D:\\MyProjects\\SeleniumTrials\\chromedriver_win32\\chromedriver.exe"); driver = new ChromeDriver(); driver.get(properties.getProperty("VAR_BASEURL")); driver.manage().window().maximize(); workbook = new HSSFWorkbook(); sheet = workbook.createSheet("TestResult_Registration"); //sheet = workbook.createSheet("TestResult_Login"); testresultdata = new LinkedHashMap<String, Object[]>(); testresultdata.put("1", new Object[] { "Test Case Id", "Functionality","Action", "Expected Result", "Actual Result", "Status" }); return 0; } public void input(String fileName) throws BiffException, IOException, InterruptedException { FileInputStream fi = new FileInputStream(fileName); Workbook w = Workbook.getWorkbook(fi); excelSheet = w.getSheet(0); Thread.sleep(1000); } public String getCellContent(int columnNumber, int rowNumber) { return excelSheet.getCell(columnNumber, rowNumber).getContents(); } public WebElement webElement(String element) { return driver.findElement(By.xpath(properties.getProperty(element))); } public void closeBrowser() throws InterruptedException, BiffException, IOException { Thread.sleep(1000); Set<String> keyset = testresultdata.keySet(); int rownum = 0; for (String key : keyset) { Row row = sheet.createRow(rownum++); Object[] objArr = testresultdata.get(key); int cellnum = 0; for (Object obj : objArr) { org.apache.poi.ss.usermodel.Cell cell = row.createCell(cellnum++); if (obj instanceof Date) cell.setCellValue((Date) obj); else if (obj instanceof Boolean) cell.setCellValue((Boolean) obj); else if (obj instanceof String) cell.setCellValue((String) obj); else if (obj instanceof Double) cell.setCellValue((Double) obj); } } try { FileOutputStream out = new FileOutputStream("D:\\MyProjects\\Selenium Trials\\QZO\\src\\Resources\\Data\\TestResult.xls"); workbook.write(out); out.close(); System.out.println("Excel written successfully.."); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } driver.quit(); } } 

你可以创build如下 –

  XSSFSheet sheet= workbook.createSheet("Sheet_No_1"); XSSFSheet sheet= workbook.createSheet("Sheet_No_2"); 

等等 。

在您的项目中创build一个名为Xsl_Reader的新类,然后复制下面的代码。

 import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFHyperlink; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.xssf.usermodel.*; import java.io.*; import java.util.Calendar; public class Xls_Reader { public String path; public FileInputStream fis = null; public FileOutputStream fileOut =null; private XSSFWorkbook workbook = null; private XSSFSheet sheet = null; private XSSFRow row =null; private XSSFCell cell = null; public Xls_Reader(String path) { this.path=path; try { fis = new FileInputStream(path); workbook = new XSSFWorkbook(fis); sheet = workbook.getSheetAt(0); fis.close(); } catch (Exception e) { e.printStackTrace(); } } // returns the row count in a sheet public int getRowCount(String sheetName){ int index = workbook.getSheetIndex(sheetName); if(index==-1) return 0; else{ sheet = workbook.getSheetAt(index); int number=sheet.getLastRowNum()+1; return number; } } // returns the data from a cell public String getCellData(String sheetName,String colName,int rowNum){ try{ if(rowNum <=0) return ""; int index = workbook.getSheetIndex(sheetName); int col_Num=-1; if(index==-1) return ""; sheet = workbook.getSheetAt(index); row=sheet.getRow(0); for(int i=0;i<row.getLastCellNum();i++){ //System.out.println(row.getCell(i).getStringCellValue().trim()); if(row.getCell(i).getStringCellValue().trim().equals(colName.trim())) col_Num=i; } if(col_Num==-1) return ""; sheet = workbook.getSheetAt(index); row = sheet.getRow(rowNum-1); if(row==null) return ""; cell = row.getCell(col_Num); if(cell==null) return ""; if(cell.getCellType()==Cell.CELL_TYPE_STRING) return cell.getStringCellValue(); else if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC || cell.getCellType()==Cell.CELL_TYPE_FORMULA ){ String cellText = String.valueOf(cell.getNumericCellValue()); if (HSSFDateUtil.isCellDateFormatted(cell)) { double d = cell.getNumericCellValue(); Calendar cal =Calendar.getInstance(); cal.setTime(HSSFDateUtil.getJavaDate(d)); cellText = (String.valueOf(cal.get(Calendar.YEAR))).substring(2); cellText = cal.get(Calendar.DAY_OF_MONTH) + "/" + cal.get(Calendar.MONTH)+1 + "/" + cellText; } return cellText; }else if(cell.getCellType()==Cell.CELL_TYPE_BLANK) return ""; else return String.valueOf(cell.getBooleanCellValue()); } catch(Exception e){ e.printStackTrace(); return "row "+rowNum+" or column "+colName +" does not exist in xls"; } } // returns the data from a cell public String getCellData(String sheetName,int colNum,int rowNum){ try{ if(rowNum <=0) return ""; int index = workbook.getSheetIndex(sheetName); if(index==-1) return ""; sheet = workbook.getSheetAt(index); row = sheet.getRow(rowNum-1); if(row==null) return ""; cell = row.getCell(colNum); if(cell==null) return ""; if(cell.getCellType()==Cell.CELL_TYPE_STRING) return cell.getStringCellValue(); else if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC || cell.getCellType()==Cell.CELL_TYPE_FORMULA ){ String cellText = String.valueOf(cell.getNumericCellValue()); if (HSSFDateUtil.isCellDateFormatted(cell)) { // format in form of M/D/YY double d = cell.getNumericCellValue(); Calendar cal =Calendar.getInstance(); cal.setTime(HSSFDateUtil.getJavaDate(d)); cellText = (String.valueOf(cal.get(Calendar.YEAR))).substring(2); cellText = cal.get(Calendar.MONTH)+1 + "/" + cal.get(Calendar.DAY_OF_MONTH) + "/" + cellText; } return cellText; }else if(cell.getCellType()==Cell.CELL_TYPE_BLANK) return ""; else return String.valueOf(cell.getBooleanCellValue()); } catch(Exception e){ e.printStackTrace(); return "row "+rowNum+" or column "+colNum +" does not exist in xls"; } } // returns true if data is set successfully else false public boolean setCellData(String sheetName,String colName,int rowNum, String data){ try{ fis = new FileInputStream(path); workbook = new XSSFWorkbook(fis); if(rowNum<=0) return false; int index = workbook.getSheetIndex(sheetName); int colNum=-1; if(index==-1) return false; sheet = workbook.getSheetAt(index); row=sheet.getRow(0); for(int i=0;i<row.getLastCellNum();i++){ //System.out.println(row.getCell(i).getStringCellValue().trim()); if(row.getCell(i).getStringCellValue().trim().equals(colName)) colNum=i; } if(colNum==-1) return false; sheet.autoSizeColumn(colNum); row = sheet.getRow(rowNum-1); if (row == null) row = sheet.createRow(rowNum-1); cell = row.getCell(colNum); if (cell == null) cell = row.createCell(colNum); cell.setCellValue(data); fileOut = new FileOutputStream(path); workbook.write(fileOut); fileOut.close(); } catch(Exception e){ e.printStackTrace(); return false; } return true; } // returns true if data is set successfully else false public boolean setCellData(String sheetName,String colName,int rowNum, String data,String url){ try{ fis = new FileInputStream(path); workbook = new XSSFWorkbook(fis); if(rowNum<=0) return false; int index = workbook.getSheetIndex(sheetName); int colNum=-1; if(index==-1) return false; sheet = workbook.getSheetAt(index); row=sheet.getRow(0); for(int i=0;i<row.getLastCellNum();i++){ if(row.getCell(i).getStringCellValue().trim().equalsIgnoreCase(colName)) colNum=i; } if(colNum==-1) return false; sheet.autoSizeColumn(colNum); row = sheet.getRow(rowNum-1); if (row == null) row = sheet.createRow(rowNum-1); cell = row.getCell(colNum); if (cell == null) cell = row.createCell(colNum); cell.setCellValue(data); XSSFCreationHelper createHelper = workbook.getCreationHelper(); //cell style for hyperlinks CellStyle hlink_style = workbook.createCellStyle(); XSSFFont hlink_font = workbook.createFont(); hlink_font.setUnderline(XSSFFont.U_SINGLE); hlink_font.setColor(IndexedColors.BLUE.getIndex()); hlink_style.setFont(hlink_font); //hlink_style.setWrapText(true); XSSFHyperlink link = createHelper.createHyperlink(XSSFHyperlink.LINK_FILE); link.setAddress(url); cell.setHyperlink(link); cell.setCellStyle(hlink_style); fileOut = new FileOutputStream(path); workbook.write(fileOut); fileOut.close(); } catch(Exception e){ e.printStackTrace(); return false; } return true; } // returns true if sheet is created successfully else false public boolean addSheet(String sheetname){ FileOutputStream fileOut; try { workbook.createSheet(sheetname); fileOut = new FileOutputStream(path); workbook.write(fileOut); fileOut.close(); } catch (Exception e) { e.printStackTrace(); return false; } return true; } // returns true if sheet is removed successfully else false if sheet does not exist public boolean removeSheet(String sheetName){ int index = workbook.getSheetIndex(sheetName); if(index==-1) return false; FileOutputStream fileOut; try { workbook.removeSheetAt(index); fileOut = new FileOutputStream(path); workbook.write(fileOut); fileOut.close(); } catch (Exception e) { e.printStackTrace(); return false; } return true; } // returns true if column is created successfully public boolean addColumn(String sheetName,String colName){ try{ fis = new FileInputStream(path); workbook = new XSSFWorkbook(fis); int index = workbook.getSheetIndex(sheetName); if(index==-1) return false; XSSFCellStyle style = workbook.createCellStyle(); style.setFillForegroundColor(HSSFColor.GREY_40_PERCENT.index); style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); sheet=workbook.getSheetAt(index); row = sheet.getRow(0); if (row == null) row = sheet.createRow(0); if(row.getLastCellNum() == -1) cell = row.createCell(0); else cell = row.createCell(row.getLastCellNum()); cell.setCellValue(colName); cell.setCellStyle(style); fileOut = new FileOutputStream(path); workbook.write(fileOut); fileOut.close(); }catch(Exception e){ e.printStackTrace(); return false; } return true; } // removes a column and all the contents public boolean removeColumn(String sheetName, int colNum) { try{ if(!isSheetExist(sheetName)) return false; fis = new FileInputStream(path); workbook = new XSSFWorkbook(fis); sheet=workbook.getSheet(sheetName); XSSFCellStyle style = workbook.createCellStyle(); style.setFillForegroundColor(HSSFColor.GREY_40_PERCENT.index); XSSFCreationHelper createHelper = workbook.getCreationHelper(); style.setFillPattern(HSSFCellStyle.NO_FILL); for(int i =0;i<getRowCount(sheetName);i++){ row=sheet.getRow(i); if(row!=null){ cell=row.getCell(colNum); if(cell!=null){ cell.setCellStyle(style); row.removeCell(cell); } } } fileOut = new FileOutputStream(path); workbook.write(fileOut); fileOut.close(); } catch(Exception e){ e.printStackTrace(); return false; } return true; } public boolean isSheetExist(String sheetName){ int index = workbook.getSheetIndex(sheetName); if(index==-1){ index=workbook.getSheetIndex(sheetName.toUpperCase()); if(index==-1) return false; else return true; } else return true; } // returns number of columns in a sheet public int getColumnCount(String sheetName){ // check if sheet exists if(!isSheetExist(sheetName)) return -1; sheet = workbook.getSheet(sheetName); row = sheet.getRow(0); if(row==null) return -1; return row.getLastCellNum(); } //String sheetName, String testCaseName,String keyword ,String URL,String message public boolean addHyperLink(String sheetName,String screenShotColName,String testCaseName,int index,String url,String message){ url=url.replace('\\', '/'); if(!isSheetExist(sheetName)) return false; sheet = workbook.getSheet(sheetName); for(int i=2;i<=getRowCount(sheetName);i++){ if(getCellData(sheetName, 0, i).equalsIgnoreCase(testCaseName)){ setCellData(sheetName, screenShotColName, i+index, message,url); break; } } return true; } public int getCellRowNum(String sheetName,String colName,String cellValue){ for(int i=2;i<=getRowCount(sheetName);i++){ if(getCellData(sheetName,colName , i).equalsIgnoreCase(cellValue)){ return i; } } return -1; } // to run this on stand alone public static void main(String arg[]) throws IOException{ Xls_Reader datatable = null; datatable = new Xls_Reader("C:\\CM3.0\\app\\test\\Framework\\AutomationBvt\\src\\config\\xlfiles\\Controller.xlsx"); for(int col=0 ;col< datatable.getColumnCount("TC5"); col++){ System.out.println(datatable.getCellData("TC5", col, 1)); } }} 

// Xls_Reader类的结束

现在你可以在你的paret类中创build这个类的一个新对象,并执行Excel表格中的所有function,例如参考你的答案。

 Xls_Reader xr = new Xls_Reader("C:\\Users\\new28062016\\Desktop\\New Microsoft Office Excel Worksheet.xlsx"); xr.addSheet("Maninder"); //Xls_Reader is a class you can add this class into your project and that will help you to perform excel function //Now a new sheet with name of must be added. If you wanted to write on this new sheet then you have to simply create columns and results xr.addColumn("Maninder", "TC ID"); xr.addColumn("Maninder", "Description"); xr.addColumn("Maninder", "Description");