51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2376|回复: 4
打印 上一主题 下一主题

[原创] 如何从EXCLE中取值

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-11-1 23:34:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大纲编写基本都是用EXCLE,有哪位高手知道如何使用参数化从测试大纲的EXCLE中取值作为用例执行的输入值?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 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
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-11-4 07:40:47 | 只看该作者
十分感谢,本人调试了一个下午也没有成功,能否给个例子,其中sFileName应该是EXCLE的文件名还是路径?sSheetName应该是sheet页的名称吧?另外可否详细介绍下ADO和COM接口访问读取EXCLE值,另外是否有相关资料可以提供,万分感谢!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2010-11-4 09:40:16 | 只看该作者

    代码如下:

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

    COM接口 :
    Set  excelApp =  CreateObject("Excel.Application")
    Set  newBook = 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
                 print  CaseName  
        Else
               exit for
          End if
    Next
    excelApp.Workbooks.Close
    excelApp.Quit
    Set  newBook=nothing
    Set  excelApp =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 [Sheet1$] ",conn 'SQL语句查询所有用例,CaseName 为用例所在列的列名,[Sheet1$]为用例所在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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2010-11-6 11:28:16 | 只看该作者
    十分感谢,COM口的我已经调试成功,谢谢!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-22 07:14 , Processed in 0.072398 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表