johnnyleeliv 发表于 2010-11-1 23:34:04

如何从EXCLE中取值

大纲编写基本都是用EXCLE,有哪位高手知道如何使用参数化从测试大纲的EXCLE中取值作为用例执行的输入值?

TIB 发表于 2010-11-2 20:23:08

可以通过ADO读取Excel数据,也可以通过COM接口访问和读取Excel单元格,例如:

Function ReadFile(sFileName,sSheetName)
        Dim oExcel
        Dim oSheet
        Dim oRange
        Dim arrRange

        On Error Resume Next
          ' 创建Excel应用程序对象
                Set oExcel = CreateObject("Excel.Application")
                If err.Number <> 0 Then
                        MsgBox "未能初始化Excel" & vbCrLf & _
                                           "请确保Excel已安装", vbCritical
                        Exit Function
                End If
        On Error Goto 0
                       
        On Error Resume Next
                        ' 打开Excel文件
                        oExcel.Workbooks.Open(sFileName)
                  If err.Number <> 0 Then
                                MsgBox "未能加载Excel文件" & vbCrLf & _
                                        "请确保Excel文件路径正确或格式正确", vbCritical
                                Exit Function
                        End If
        On Error Goto 0
       
        ' 获取表格的使用范围
        Set oSheet = oExcel.Worksheets(sSheetName).UsedRange
        ' 获取从A列到Z列,从第1行到第1000行的范围i中的所有值
        Set oRange = oSheet.Range("A1:Z1000")
        '把Excel数据转换到数组
        arrRange = oRange.Value
        ' 关闭工作簿
        oExcel.WorkBooks.Item(1).Close
        ' 退出Excel
        oExcel.Quit
        Set oExcel = Nothing
    ' 返回包含Excel数据的数组
   ReadFile = arrRange
End Function

johnnyleeliv 发表于 2010-11-4 07:40:47

十分感谢,本人调试了一个下午也没有成功,能否给个例子,其中sFileName应该是EXCLE的文件名还是路径?sSheetName应该是sheet页的名称吧?另外可否详细介绍下ADO和COM接口访问读取EXCLE值,另外是否有相关资料可以提供,万分感谢!

feiyunkai 发表于 2010-11-4 09:40:16

代码如下:

本帖最后由 feiyunkai 于 2010-11-4 18:08 编辑

COM接口 :
SetexcelApp =CreateObject("Excel.Application")
SetnewBook = excelApp.Workbooks.open(excelpath) 'excelpath为EXCEL路径
For i= 1 to 10000 '若第N行是用例起始行,则修改为for i=N to 10000 ,10000是任意一个大于用例总数的数字
CaseName=newBook.WorkSheets(SheetName).Cells(i,j) 'SheetName是用例所在Sheet,i是用例所在行,j是用例所在列

      if CaseName<>"" then
             printCaseName
    Else
         exit for
      End if
Next
excelApp.Workbooks.Close
excelApp.Quit
SetnewBook=nothing
SetexcelApp =nothing
ADO接口:
Set conn= createobject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&excelpath&";Extended Properties=Excel 8.0"    'EXCEL97-2003,excelpath为EXCEL所在路径
'conn.Open "Provider=Microsoft.Jet.OLEDB.12.0;Data Source="&excelpath&";Extended Properties=Excel 12.0"'EXCEL2007要安装OLEDB12.0不然会报错
Set rs=CreateObject("ADODB.Recordset")'创建记录集
rs.Open "Select CaseName from ",conn 'SQL语句查询所有用例,CaseName 为用例所在列的列名,为用例所在Sheet
Do
If not rs.eof Then
      CaseName=rs("CaseName")
      print "用例名称:"&CaseName
      rs.MoveNext
else
      print "没有用例"
End If
loop until rs.eof=true
conn.close
Set rs=nothing
Set conn = nothing

'若调试未通过,可以MSN给我发信息,相互学习!我的MSN:yunkai614221@live.cn

johnnyleeliv 发表于 2010-11-6 11:28:16

十分感谢,COM口的我已经调试成功,谢谢!
页: [1]
查看完整版本: 如何从EXCLE中取值