QTP使用外部Excel实现参数化主要有以下两种方式
-
导入到DataTable中
Syntax:DataTable.ImportSheet(FileName, SheetSource, SheetDest)
FileName:文件路径名
SheetSource:待导入Excel文件的sheet名称或序号
SheetDest:QTP中DataTable中sheet名称或序号
参考案例:
Dim filePath '工作表所在文件路径; Dim strDataSheet 'QTP中DataTable内待倒入的sheet的名称 filePath= "d:data.xls" strDataSheet = DataTable.GlobalSheet.Name DataTable.ImportSheet filePath ,1 ,strDataSheet '第二个参数:1表示excel的第一个sheet,也可以用sheet名称代替;第三个参数同理
Excle中数据倒入到DataTable中后,执行从DataTable中读取数据的操作,具体操作参考 【QTP专题】05_参数化之DataTable
-
利用com操纵Excel
Option Explicit ' ================================================= ' 函数说明:获取Excel工作表中单元格的值 ' 参数说明: ' (1)filePath:工作表所在文件路径; ' (2)excelSheet:工作表名称; ' (3)colName:列名; ' (4)row:行的序号; ' 返回结果:返回单元格的值 ' 调用方法:userName=getCellValue (filePath,"loginUser","用户名",2) ' ================================================= Function getCellValue(filePath,excelSheet,colName,row) Dim ObjExcel,excBook,excSheet,cellValue Set ObjExcel = CreateObject ("Excel.Application") ObjExcel.Visible = False 'Excel程序不在前台显示 Set excBook = ObjExcel.WorkBooks.Open(filePath) '打开参数filePath指定的excel文件工作簿 Set excSheet=excBook.Worksheets(excelSheet) '名为参数excelSheet的工作表 colNum= excSheet.UsedRange.Columns.Count '获取工作表的列数 Dim i,col For i=1 to colNum '循环工作表中所有列 If excSheet.Cells(1,i).Value = colName Then '如果列名为参数colName col=i '将该列名所在列号赋给变量col End If Next cellValue = excSheet.Cells(row,col).Value '将单元格(row,col)中的值赋予变量cellValue getCellValue = cellValue '将单元格的值赋予函数本身,表示调用函数时的返回值 'Excel退出,释放资源 ObjExcel.WorkBooks.Close ObjExcel.Quit Set ObjExcel = Nothing Set excelBook = Nothing End Function