1)将指定的miscrosoft excel文件导入运行时数据表(including all data sheets).
DataTable.Import "C:\Data.xls" ' Import data from an external file
问:是不是导入到datatable的global sheet中?
答:是,导入的表将替换现有运行时数据表(包括所有数据表)中的所有数据。
将指定文件的工作表导入运行时数据表的指定工作表。
DataTable.ImportSheet “c:\Tables.xls”,1,”Action1” ‘import a single sheet
也可以这样用:DataTable.ImportSheet "C:\name.xls" ,1 ," Global"但Qtp中不要使用Global表,会出现死循环现象。
问:是不是导入到datatable中的Action1 sheet?
答:是,如果要指定一个sheetname
DataTable.addSheet “name”
DataTable.ImportSheet filename,1,”name”
表示在dataTable中新建一个sheet,然后把excel数据导入到这个名称为name的sheet中
问:当用DataTable.Import导入的时候,action1的执行次数等于datatable的记录数?
当用DataTable.ImportSheet导入的时候,action2的执行次数只有一次?
两者的区别是?
答:控制test的执行,Test有个设置:data table iterator,可以在file->settings中设置;控制action的执行,可以通过runaction来控制:Runaction "action2",alliterations,或者Runaction "action2",oneiteration。
问:但是这个alliterations是根据global dataTable的来执行还是根据datatable的action sheet的数据行来执行?
答:假定global DataTable的记录行数为rowcount1,action datatable的记录行数为rowcount2,当在file->settings中设置run为run on all rows的时候,test运行rowcount1次;如果在action call properties中设置run on all rows的时候,test运行rowcount1次,同时该action运行rowcount2次
2)获得datatable的某工作表name的记录数
x = DataTable.GetSheet("name").getRowCount
3)问:能否导入excel工作表指定的行列内容?
答:只能通过Set bjExcel = CreateObject("Excel.Application")这样的对象去循环获取,然后赋值给dataTable(未找到其他方法)
4)问:怎么定义dataTable的参数名?怎么给参数赋值?
答:DataTable.AddSheet ("MySheet").AddParameter("Time", "8:00")
经过验证,addParameter后面不跟括号。(help中说明可以加括号,不解)
5)问:如果要定义参数名,然后指定excel数据导入指定的参数名下,怎么做?
答:excel表中第一行就可以定义参数名,qtp导入的时候,会把第一行作为参数名导入,第二行开始才是参数值。
6)DataTable.GlobalSheet:全局Sheet
DataTable.LocalSheet:Action执行是的本地Sheet
7)DataTable.GetSheet("name").getRowCount返回的是excel的所有行,也包括作为参数名的第一行
8)取得datatable中参数名称为p_Text的值,dtLocalSheet为指定的sheetName:
Xname = DataTable("p_Text", dtLocalSheet)
或
Xname = DataTable.value("p_Text", dtLocalSheet)
Xname = DataTable.GlobalSheet.GetParameter("p_Text").Value
取得datatable中第一列参数的值
Xname = DataTable.GlobalSheet.GetParameter(1).Value
向某一列的单元格赋值:
DataTable.value("column_name",dtlocalsheet)="nanjing"
9)循环获取datatable的参数值
Dim count1,i
count1 = DataTable.GetSheet("name").getRowCount‘获得名为name的sheet的行数
For i = 1 to (count1)
DataTable.SetCurrentRow(i) ‘设置当前行号
userId = DataTable.GetSheet("name").getParameter("账号").value
Next
10)取datatable中某一行值
datatable.getsheet(“global”).getparameter("列名").valuebyrow(i)
如果想取第一行,就将i变为1