51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8777|回复: 22
打印 上一主题 下一主题

[原创] QTP9.2-DataTable.ImportSheet读取问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-7-17 11:13:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用语句:
DataTable.importSheet "D:\TestResult.xls",1,4
执行会报错;
而用语句:
DataTable.importSheet "D:\TestResult.xls","LogChk",4
则可以成功执行完毕

这是为什么呀???希望高手指点!
具体报错信息见附件!

在线等ING...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-7-17 12:34:22 | 只看该作者
EXCEL表不能用数字代替 个人这么认为的 你不能加sheet吗
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-7-17 13:00:25 | 只看该作者
DataTable.ImportSheet(FileName, SheetSource, SheetDest)


Argument
Type
Description

FileName  String  The full path of the Excel table from which you want to import a sheet.  
SheetSource  Variant  The name or index of the sheet in the file that you want to import. Index values begin with 1.  
翻译: sheetSource  变量类型  你想导入的文件中的sheet名,或序列号. 序列号值从1开始;
SheetDest  Variant  The name or index of the sheet in the Data Table that you want to replace with the SheetSource. Index values begin with 1.  
朋友...建议你看看QTP里的HELP文件吧
有谁能帮帮我啊.....苦呢啊
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-7-17 15:51:25 | 只看该作者
你在试下 我实验了下是可以的
datatable.ImportSheet  "D:\PSCI项目\考生\9001系列.xls",1,2
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-7-17 15:54:00 | 只看该作者
没有问题啊,我用DataTable.importSheet "D:\TestResult.xls",1,1 运行成功!
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-7-17 15:54:28 | 只看该作者
去检查下你的datatable表中是否有第4个sheet
应该是这个地方错了

你可以实验下DataTable.importSheet "D:\TestResult.xls",1,2
看看行不行 如果可以 就是因为你没有sheet
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-7-17 15:56:39 | 只看该作者
他的代码有可能在datatable中没有第4个sheet 造成的提示! 我刚刚实验了下如果没有第4个sheet 就会报LZ的错误 .
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2008-7-18 09:39:56 | 只看该作者
嗯..谢谢各位的指点...我试试看哈..
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2008-7-18 09:55:24 | 只看该作者
55555555555好像还是不行啊....

DataTable.ImportSheet FileName, SheetSource, SheetDest

SheetSource  Variant  The name or index of the sheet in the file that you want to import. Index values begin with 1.
Sheet来源:    变量类型   你想导入文件中的Sheet名,或序号; 序号值从1开始;  

SheetDest  Variant  The name or index of the sheet in the Data Table that you want to replace with the SheetSource. Index values begin with 1.  
想要替换的Sheet(这里是个人感觉是指Run-Time DataTable中的Sheet)  变量类型  DataTable中, 你想要替换掉的Sheet名或其序号; 序号值也是从1开始计;

注:

现在我的问题不是出在SheetDest: 因为 当我用语句: DataTable.ImportSheet "D:\TestResult.xls","LogChk",4 时是完全没有问题的(SheetDest不管是2,或4都是OK的)
而当我将SheetSource从Sheet名,改为其序号就开始报错了;因此个人判断,问题不出在第3个参数,问题还是第2个参数,为啥我就不能用序号呢,好奇怪哈

继续啊...高手来指点啊....迷茫ING...
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-7-18 10:21:04 | 只看该作者
那你再新建一个excel文档,不改sheet名,看看DataTable.ImportSheet "D:\TestResult.xls",1,4
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2008-7-18 10:43:47 | 只看该作者
总算有点眉目了....好像是和我参数有关

直接用: DataTable.ImportSheet "D:\test.xls",1,4  可以

而我如果这样做:
      Dim SheetNum
      SheetNum = 1

       DataTable.ImportSheet "D:\test.xls",SheetNum,4
   就会报错

  请问得用啥类型才能接受1个整型变量值呀...
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2008-7-18 11:00:20 | 只看该作者
我把我代码贴上来算了:
先看被调用的Action -> LoginChk
Dim DataPath, SheetNum

DataPath = Parameter.Item("DataPath")'String类型
SheetNum = Parameter.Item("SheetNum")'String类型
print SheetNum
print DataPath

DataTable.ImportSheet DataPath,SheetNum,2

Dim LogName,Password,Expresult,ActResult,CaseNum,ActNum

CaseNum = 0

ActNum = DataTable.GetSheet(2).GetRowCount
print ActNum
While CaseNum<ActNum
     LogName = DataTable.RawValue("LoginName",2)
     Password = DataTable.RawValue("Password",2)
     ExpResult = DataTable.RawValue("ExpRslt",2)
         
     Dialog("Login").WinEdit("Agent Name:").Set LogName
     Dialog("Login").WinEdit("Password:").Set Password
    ' print LogName
     ' print Password
     Dialog("Login").WinButton("OK").Click
         
   If Dialog("Login").Dialog("Flight Reservations").Exist Then
       ActResult = Dialog("Login").Dialog("Flight Reservations").Static("Password must be at least 4 characters long").GetROProperty("text")
       Dialog("Login").Dialog("Flight Reservations").WinButton("确定").Click
   else
           Window("Flight Reservation").WaitProperty "visible", True, 10000
           ActResult = Window("Flight Reservation").GetROProperty("text")
   End If
         
         
     If ExpResult = ActResult Then
                 DataTable.Value("PassOrNot",2)="PASS"
                 DataTable.Value("ActResult",2)=ActResult
          Reporter.ReportEvent micPass, "LoginChk", "LoginChk is OK"
                 Else
                 DataTable.Value("PassOrNot",2)="Failure"
                 DataTable.Value("ActResult",2)=ActResult
                   Reporter.ReportEvent micFail, "LoginChk", "LoginChk is Not Ok"
         End If
'
   
     DataTable.SetNextRow
         CaseNum = CaseNum+1
Wend


  Parameter.Item("CaseNum")=CaseNum

  DataTable.ExportSheet DataPath,2
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2008-7-18 11:04:26 | 只看该作者
再看我的主调Action-> TestMain

Dim DataPath,SheetInitNum,SheetNum,InitFlag,CaseNum
DataPath = "D:\TestResult.xls"
SheetNum = 1
RunAction "TestInit [TestInit]", oneIteration,InitFlag  'InitFlag是用来判断初始化Action成功与否的,若成功的话就能读到值,不会是空的,可以调用登录检查模块进行测试;

If InitFlag <>"" Then
               RunAction "LoginChk [LoginChk]", oneIteration,DataPath,SheetNum,CaseNum
        print CaseNum
End If
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2008-7-18 11:47:39 | 只看该作者
把DataTable.ImportSheet DataPath,SheetNum,2改成:
DataTable.ImportSheet DataPath,CInt(SheetNum),2

然后再试试!
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2008-7-18 13:13:05 | 只看该作者
非常感谢老师...哈哈..问题解决了...
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2008-7-18 13:27:40 | 只看该作者
CInt这个方法是4舍5入 用在这个地方为什么可以 ??????
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2008-7-18 13:46:14 | 只看该作者
16楼,CInt无非是转换成int类型,在这里四舍五入有什么关系?都是整数的
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2008-7-18 15:05:45 | 只看该作者
问下楼主,Reporter.ReportEvent micPass, "LoginChk", "LoginChk is OK"  这句的效果是什么
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2008-7-18 15:16:09 | 只看该作者

回复 18# 的帖子

这个是QTP在报告中加入消息的语句,你可以去查下QTP的帮助,看看怎么用的
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2008-7-18 17:36:09 | 只看该作者
dim double1,double2
double1=526.5123
double2=526.4123
msgbox clnt(double1)
msgbox clnt(double2)
17楼自己运行自己看
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-9-30 02:26 , Processed in 0.098181 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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