这个代码的原理是把Excel的数据当做数据库里的数据一样处理,可以对Excel用select来检索需要的数据,然后把数据以键值对的形式保存到oDict里,方便在用例层来调用

 Class oDataDic

         Private oDic
Public oWorkBookPath
Public oSheetName
Public oRowNo Private Sub Class_Initialize
'oWorkBookPath = getTestDataFromQC_QTP("业务系统测试数据") oWorkBookPath = Environment.Value("ProductDir") & "\业务系统测试数据.xls" 'strTestDataPath
End Sub Public Default Function Load(oSheetName, oRowNo)
With Me
.oWorkBookPath = oWorkBookPath
.oSheetName = oSheetName
.oRowNo = oRowNo
End With BuildContext
Set Load = oDic
End Function Public Function GetExcelRecordCount(oSheetName, CaseNO)
Dim oConn, oRS, arrData, x
Set oConn = CreateObject("ADODB.Connection")
Set oRS = CreateObject("ADODB.RecordSet") oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & oWorkBookPath & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";" If IsNumeric(CaseNO) Then
sQuery = "select * from [" & oSheetName & "$]" & " where 测试用例编号 = " & CaseNO
else
sQuery = "select * from [" & oSheetName & "$]" & " where 测试用例名称 = " & "'" & CaseNO & "'"
End If oRS.Open sQuery, oConn, , , ' rows = oRS.Index
GetExcelRecordCount = oRS.RecordCount
' num = oRS.GetRows
' Dim x
' For x= 2 To oRS.RecordCount + 1
' If CStr(oRS.Fields(0)) = CaseNO Then
' msgbox x
' CStr(oRS.Fields(1))
' Exit For
' Else
' oRS.MoveNext
' End If
' Next
' Set oDic = CreateObject("Scripting.Dictionary")
'
' For x = 0 To oRS.Fields.Count - 1
' With oDic
' .Add "" & oRS(x).Name, "" & oRS.Fields(x)
' End With
' Next
'
' Set GetExcelRecordCount = oDic End Function Public Function LoadExcelRecord(oSheetName, CaseNO, oRowNo)
' On Error Resume Next
Dim oConn, oRS, arrData, x
Set oConn = CreateObject("ADODB.Connection")
Set oRS = CreateObject("ADODB.RecordSet") oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & oWorkBookPath & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";" If IsNumeric(CaseNO) Then
sQuery = "select * from [" & oSheetName & "$]" & " where 测试用例编号 = " & CaseNO
else
sQuery = "select * from [" & oSheetName & "$]" & " where 测试用例名称 = " & "'" & CaseNO & "'"
End If
oRS.Open sQuery, oConn, , , ' For x= 2 To oRS.RecordCount + 1
' If CStr(oRS.Fields(0)) = CaseNO Then
' msgbox x
' CStr(oRS.Fields(1))
' Exit For
' Else
' oRS.MoveNext
' End If
' Next For x= To oRowNo - : oRS.MoveNext : Next Set oDic = CreateObject("Scripting.Dictionary") For x = To oRS.Fields.Count -
With oDic
.Add "" & oRS(x).Name, "" & oRS.Fields(x)
' .Add cstr(oRS(x).Name), cstr(oRS.Fields(x))
End With
Next Set LoadExcelRecord = oDic End Function Private Function BuildContext
Dim oConn, oRS, arrData, x Set oConn = CreateObject("ADODB.Connection")
Set oRS = CreateObject("ADODB.RecordSet") oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Me.oWorkBookPath & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";" sQuery = "select * from [" & Me.oSheetName & "$]"
oRS.Open sQuery, oConn, , , For x= To oRowNo - : oRS.MoveNext : Next Set oDic = CreateObject("Scripting.Dictionary") For x = To oRS.Fields.Count -
With oDic
.Add "" & oRS(x).Name, "" & oRS.Fields(x)
' .Add cstr(oRS(x).Name), cstr(oRS.Fields(x))
End With
Next ' Set oDic = Nothing
' Set oRS = Nothing
' Set oConn =Nothing
End Function ' Private Property Let oDic(ByVal val)
' Set oDic = val
' End Property
'
' Private Property Get oDic()
' Set oDic = oDic
' End Property
End Class Set mDataContext = New oDataDic

QTP数据驱动之读取Excel数据的更多相关文章

  1. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

  2. .NET读取Excel数据,提示错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

    解决.NET读取Excel数据时,提示错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序的操作: 1. 检查本机是否安装Office Access,如果未安装去去h ...

  3. oledbdataadapter 读取excel数据时,有的单元格内容不能读出

    表现:excel中某列中,有的单元格左上角有绿色箭头标志,有的没有,c#编写读取程序,但是只能读取出带绿色箭头的单元格中的内容,其余不带的读取不到内容 原因:excel中单元格因为是文本格式而存储了数 ...

  4. Openxml入门---Openxm读取Excel数据

    Openxml读取Excel数据: 有些问题,如果当Cell 里面是 日期和浮点型的话,对应的Cell.DataType==Null,对应的时间会转换为一个浮点型,对于这块可以通过DateTime.F ...

  5. C# 读取EXCEL数据

       /// <summary> /// 读取EXCEL数据 /// </summary> /// <param name="Path">< ...

  6. JAVA反射机制示例,读取excel数据映射到JAVA对象中

    import java.beans.PropertyDescriptor; import java.io.File; import java.io.FileInputStream; import ja ...

  7. Python读取Excel数据并根据列名取值

    一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...

  8. jxl读写excel, poi读写excel,word, 读取Excel数据到MySQL

    这篇blog是介绍: 1. java中的poi技术读取Excel数据,然后保存到MySQL数据中. 2. jxl读写excel 你也可以在 : java的poi技术读取和导入Excel了解到写入Exc ...

  9. Delphi中使用python脚本读取Excel数据

    Delphi中使用python脚本读取Excel数据2007-10-18 17:28:22标签:Delphi Excel python原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

随机推荐

  1. .NET特性-Attribute

    两篇文章有助于学习Attribute特性的概念. http://blog.csdn.net/byondocean/article/details/6802111 http://www.cnblogs. ...

  2. JAVA读取TXT文本中的数据

    现在在Demo.txt中存在数据: ABC 需要将ABC从文本文件中读取出来 代码片: import java.io.*; class FileReaderDemo { public static v ...

  3. 【转载】mysql 四种隔离级别分析

    sql标准中,有四种隔离级别,各个离级别都有各自的规则,隔离级别越低,允许并发越大,消耗的资源越少,但是越不安全,下面就mysql数据库来分别介绍一下(每个存储引擎实施的隔离级别会有稍微的不同)mys ...

  4. Python之str(),repr(),``

    对于对象obj: str()生成的字串是给人看的 repr()生成的字串是给解析器看的 ``与repr()等义. 最直接就是: ------------------- obj=eval(repr(ob ...

  5. NodeJS学习笔记(转载)

    前言 让nodeJS跑起来 文件结构 node_modules/ejs app.js 路由 路由规则 添加路由规则 注册功能 MongoDB 安装MongoDB 链接MongoDB 结语 前言 最近同 ...

  6. Java 8 VM GC Tuning Guide Charter3-4

    第三章 Generations One strength of the Java SE platform is that it shields the developer from the compl ...

  7. bnuoj 33648 Neurotic Network(树形模拟题)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=33648 [题解]:结果先对MOD*2取模,才能得到结果是否是正确的奇偶问题,得到最后结果之后再对MO ...

  8. EntityFramework Add方法与Attach区别

    一 先发问. 问题:在使用EF过程中,能否有一个方法可以直接执行传入的SQL语句.纠结的只找到了调用存储过程的方法,难道要SqlHelper.cs?    二 友情提示 本文内容参考自MSDN. 三 ...

  9. knockoutjs select onchange 下拉级联

    1.绑定数据源 <select name="" class="xlb02" data-bind="options: $root.dataSour ...

  10. Fixing:insert_modules not found

    搞linux的最怕的就是panic.满屏的报错不知头绪,百度出来的还都是抄来抄去的垃圾. 我遇到的错误已经解决,所以不想再看到报错了..google出来两个没有上下文的文本,因为和他们差不多,在下面贴 ...