【QTP专题】05_参数化之Excel

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

 

 

 

 

你可能感兴趣的:(Excel)