2015-01-22 2 views
0

При попытке получить данные из листа Excel во время работы с инструментом OATS он всегда попадает в блок catch функции. Ниже приведен скрипт. Пожалуйста, помогите нам решить эту проблему.Ввод/экспорт данных через MS Excel в OATS Scripts

public String getInputfromExcel(int argColumnNumber,int argRowNumber)throws Exception 
    { 
      String inputExcelName = dataPath+".xlsx"; 
      String cellContent = "12"; 
      try 
      { 
       Workbook workbook = Workbook.getWorkbook(new File(inputExcelName)); 
       Sheet sheet = workbook.getSheet(0); 
       Cell a1 = sheet.getCell(argColumnNumber, argRowNumber); 
       cellContent = (a1.getContents()).toString(); 
       System.out.println(cellContent.toString()); 
       workbook.close(); 
      } 
      catch (Exception e) 
      { 
      addReport("Getting Input From Excel", "Fail","Exception while reading value from excel sheet"); 

      } 
      return cellContent; 
    } 
+0

Поместите 'e.printStackTrace(); 'в блоке поймать. Таким образом, вы можете видеть в stderr, что происходит не так. –

+0

Спасибо, Алекс. Однако, когда я вижу сообщение консоли, это показывает мне ошибку ниже. Сможете ли вы помочь мне отладить это, пожалуйста. java.lang.ArrayIndexOutOfBoundsException: 2 в jxl.read.biff.SheetImpl.getCell (SheetImpl.java:356) на script.getInputfromExcel (script.java:196) в script.run (script.java:117) at oracle.oats.scripting.modules.basic.api.ИнтеграцияVUser.run (IteratingVUser.java:350) at oracle.oats.scripting.modules.basic.api.internal.ИсследованиеАгент.run (IteratingAgent.java:799) at java.lang.Thread.run (Thread.java:619) –

+1

Итак, как интерпретировать трассировку стека: в jxl.read.biff.SheetImpl.getCell (файл SheetImpl.java) есть 'java.lang.ArrayIndexOutOfBoundsException'' : 356) в script.getInputfromExcel (script.java:196) '. «GetInputfromExcel» - ваш код. Так что же это за линия 196? Я подозреваю, что 'Cell a1 = sheet.getCell (argColumnNumber, argRowNumber);'. Таким образом, getCell выходит за пределы. Итак, каковы значения 'argColumnNumber' и' argRowNumber', если возникает ошибка? Является ли Cell (argColumnNumber, argRowNumber) действительно хранимым файлом excel? –

ответ

0

Аксель поднял точку. Еще одно замечание: если я правильно помню, функция sheet.getCell (arg1, arg2) имеет первый аргумент как rowNumber, а второй - как columnNumber (оба значения основаны на 0).

0

Его старый quetion .... но просто сообщение ответа может быть полезно для кого-то нуждающегося.

В комплекте приложений для тестирования приложений Oracle. НЕТ НЕОБХОДИМОСТИ внешних JAR для чтения/записи данных.

Вы можете включить DataTable модуль в инструмент Полное объяснение приведенного здесь, http://www.testinghive.com/how-to-read-write-excel-in-oats/

//Define Sheet name to be read, and provide comma seperated to read multiple sheets 
String sheetName = "Sheet1"; 
//Mention excel sheet path 
String strFile= "C:\\Demo\\test.xls"; 

//Defined array list to add Sheets to read 
List sheetList = new ArrayList(); 
sheetList.add(sheetName); 
// Iports Sheet1 
datatable.importSheets(strFile, sheetList, true, true); 
//get rowcount 
info("Total rows :"+datatable.getRowCount()); 
int rowcount=datatable.getRowCount(); 
//Loop to read all rows 
for (int i=0;i<rowcount;i++) 
{ 
//Set current row fromw here you need to start reading, in this case start from first row 
datatable.setCurrentRow(sheetName, i); 
String strCompany=(String) datatable.getValue(sheetName,i,"Company"); 
String strEmpFName=(String) datatable.getValue(sheetName,i,"FirstName"); 
String strEmpLName=(String) datatable.getValue(sheetName,i,"LastName"); 
String strEmpID=(String) datatable.getValue(sheetName,i,"EmpID"); 
String strLocation=(String) datatable.getValue(sheetName,i,"Location"); 

//prints first name and last name 
System.out.println("First Name : "+strEmpFName+", Last Name : "+strEmpLName); 

//Sets ACTIVE column in excel sheet to Y 
String strActive="Y"; 
datatable.setValue(sheetName, i, datatable.getColumn(sheetName, datatable.getColumnIndex("Active")), strActive); 

} 

//Updates sheet with updated values ie ACTIVE column sets to Y 
datatable.exportToExcel("C:\\Demo\\test1.xlsx");