【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
复制代码
posted @ 2014-08-21 19:17  pansfy  阅读(137)  评论(0编辑  收藏  举报