2015-01-19 3 views
0

Я новичок в Java и Selenium, Selenium довольно забавна, я работаю над Selenium WebDriver с помощью платформы TestNG Data Driven.HSSF Как написать результат в Excel с использованием номера столбца Constant Int

от обратитесь к этой обучающей http://software-testing-tutorials-automation.blogspot.sg/2014/07/framework-for-selenium-webdriver-report.html#comment-form

есть утилита Excel, где данные записи, чтобы преуспеть с помощью HSSF

SuiteUtility.WriteResultUtility (FilePath, TestCaseName, "Pass/Fail/Пропустить", DataSet + 1, «PASS»);

Вместо жесткого кода я планирую использовать файл Constant для его замены. например,

public static final String KEYWORD_PASS = "PASS";
public static final int COL_TEST_CASE_RESULT = 10; // помещаем его в колонке нет 10

так будет, как они и становятся более управляемыми

SuiteUtility.WriteResultUtility (FilePath_TestResult, TestCaseName, Constant.COL_TEST_CASE_RESULT, DataSet + 1, Constant.KEYWORD_PASS) ;

Мой вопрос в том, как изменить приведенный ниже код, чтобы я мог изменить имя столбца String на номер столбца int.

public boolean writeResult(String wsName, String colName, int rowNumber, String Result){ 
 
\t try{ 
 
\t \t int sheetIndex=wb.getSheetIndex(wsName); 
 
\t \t if(sheetIndex==-1) 
 
\t \t \t return false; \t \t \t 
 
\t \t int colNum = retrieveNoOfCols(wsName); 
 
\t \t int colNumber=-1; 
 
\t \t HSSFRow Suiterow = ws.getRow(0); \t \t \t 
 
\t \t for(int i=0; i<colNum; i++){ \t \t \t \t 
 
\t \t \t if(Suiterow.getCell(i).getStringCellValue().equals(colName.trim())){ 
 
\t \t \t \t colNumber=i; \t \t \t \t \t 
 
\t \t \t } \t \t \t \t \t 
 
\t \t } 
 
\t \t if(colNumber==-1){ 
 
\t \t \t return false; \t \t \t \t 
 
\t \t } 
 
\t \t HSSFRow Row = ws.getRow(rowNumber); 
 
\t \t HSSFCell cell = Row.getCell(colNumber); 
 
\t \t if (cell == null) 
 
\t \t  cell = Row.createCell(colNumber); \t \t \t 
 
\t \t \t cell.setCellValue(Result); 
 
\t \t \t opstr = new FileOutputStream(filelocation); 
 
\t \t \t wb.write(opstr); 
 
\t \t \t opstr.close(); 
 
\t }catch(Exception e){ 
 
\t \t e.printStackTrace(); 
 
\t \t return false; 
 
\t } 
 
\t return true; 
 
}

ответ

0
public void setData(String adr,String sht,int rn,int cn,String val) throws Exception{ 

    FileInputStream fsIP= new FileInputStream(new File(adr)); //Read the spreadsheet that needs to be updated 

    XSSFWorkbook wb = new XSSFWorkbook(fsIP); //Access the workbook 

    XSSFSheet worksheet = wb.getSheet(sht); //Access the worksheet, so that we can update/modify it. 

    Cell cell = null; // declare a Cell object 

    cell = worksheet.getRow(rn).getCell(cn); // Access the second cell in second row to update the value 

    cell.setCellValue(val); // Get current cell value value and overwrite the value 

    fsIP.close(); //Close the InputStream 

    FileOutputStream output_file =new FileOutputStream(new File(adr)); //Open FileOutputStream to write updates 

    wb.write(output_file); //write changes 

    output_file.close(); //close the stream 
} 

Это может быть оказана помощь.