51Testing软件测试论坛

标题: 如何将脚本运行完的结果存入EXCEL中 [打印本页]

作者: xueqinzhaoqing    时间: 2007-6-28 11:55
标题: 如何将脚本运行完的结果存入EXCEL中
我想将运行完的结果,比如"PASS"或是“FAILED”写入到EXCEL中,如何写代码?
作者: 风过无息    时间: 2007-6-28 13:12
楼主可以直接创建EXCEL对象然后把值放进去,也可以把值放在datatable里面,最后导出到EXCEL.
作者: yuandjing    时间: 2007-6-29 09:42
或者导出到txt文件,用逗号分割,最后更改后缀名为.csv就能用excel打开了
作者: rivermen    时间: 2007-6-29 14:58
datatable.ExportSheet filePath & "\DataTable.xls",2
作者: xiao*    时间: 2007-7-3 14:37
wksheet1.Cells(row,col)= “pass”
作者: xueqinzhaoqing    时间: 2007-7-4 17:36
我感觉你们回答的有些简单,对于你们来说可能太简单了。但对于我们第一次做的人可能还是不会。目前我已经把问题解决了。我是参照梦醒十分的读书笔记解决的。在此谢谢所有回答我问题的朋友
作者: hotmail624    时间: 2007-7-5 19:21
怎么解决的可以告诉我么 我也在搞这个
作者: lhd85    时间: 2007-7-6 18:30
我贴一段QTP对xls文件的读写代码吧。

Set xlApp = CreateObject("Excel.Application")
xlApp.application.visible=true
Set xlbook=xlApp.WorkBooks.Open("d:\nonodata.xls")
Set xlSheet = xlBook.Worksheets("Sheet1")
systemutil.Run "C:\windows\system32\calc.exe"

For i=2 to 5
        input1= xlSheet.cells(i,2).value
        expression = xlSheet.cells(i,3).value
        input2= xlSheet.cells(i,4).value
        expresult = xlsheet.cells(i,5).value
       
Window("计算器").Activate
Window("计算器").Type cstr(input1)
Window("计算器").WinButton("operator").SetTOProperty "text",cstr(expression)
Window("计算器").WinButton("operator").Click
Window("计算器").WinEdit("Edit").Type cstr(input2)
Window("计算器").WinButton("=").Click

outvalue = cstr(window("计算器").WinEdit("Edit").GetROProperty ("text"))
Window("计算器").WinButton("C").Click
actresult = replace(outvalue,".","")
If trim(cstr(expresult)) <> trim(cstr(actresult)) Then
        reporter.ReportEvent 1,"测试结果","失败"
        xlsheet.cells(i,7) = "NOK"
        xlsheet.cells(i,7).font.color = vbred
else
        reporter.ReportEvent 0,"测试结果","成功"
        xlsheet.cells(i,7) = "OK"
        xlsheet.cells(i,7).font.color = vbgreen
End If
xlSheet.cells(i,6) = actresult
xlSheet.cells(i,6).font.color = vbblue
Next
Window("计算器").Close

xlbook.save
xlApp.DisplayAlerts = False
xlbook.close(true)
xlApp.quit
Set excel=nothing

p.s.:xls文件内容如下:
caseID        input1        expression        input2        expresult        actresult        conclusion
1        4        +        2        6               
2        3        -        2        1               
3        3        *        5        15               
4        6        /        2        20
作者: xueqinzhaoqing    时间: 2007-7-9 17:18
标题: 我是这样做的
Set ExcelObj = CreateObject("Excel.Application")
ExcelObj.Workbooks.Open sfilePath
Set NewSheet = ExcelObj.Sheets.Item(isheet)
NewSheet.Cells(irow,icolumn) = value
ExcelObj.ActiveWorkbook.Save
ExcelObj.Application.Quit
Set ExcelObj = Nothing
作者: wuzhuayu    时间: 2007-7-9 23:02
原帖由 xueqinzhaoqing 于 2007-7-9 17:18 发表
Set ExcelObj = CreateObject("Excel.Application")
ExcelObj.Workbooks.Open sfilePath
Set NewSheet = ExcelObj.Sheets.Item(isheet)
NewSheet.Cells(irow,icolumn) = value
ExcelObj.ActiveWorkbook ...


贴一个函数库吧,有关操作excel的,看了肯定就能知道楼主是怎么做的了。呵呵。
作者: sakusy    时间: 2007-7-12 00:28
最近也在搞这个,谢谢了
作者: wuyuzimu    时间: 2007-7-12 09:41
sdlkfj6 保存了
作者: huangjs    时间: 2007-7-22 20:33
学习
作者: meijiao    时间: 2007-7-23 12:19
学习
作者: temdow    时间: 2007-7-23 13:15
功能自动化测试“
作者: syang0517    时间: 2007-7-23 16:51
收藏了
作者: lantianwei    时间: 2007-7-23 18:00
bucuo
作者: herry-wong    时间: 2007-7-26 13:59
学习学习
作者: zemperor    时间: 2007-7-26 14:32
谢谢
作者: gzj_06    时间: 2007-7-26 16:15
有人知道是否可以在已有Excel文件的末尾追加内容
作者: 看雪时节    时间: 2007-8-7 17:18
积分!
作者: jiangdanyang    时间: 2007-8-7 18:16
谢谢,最近也在研究这个
作者: Jimmyshao    时间: 2007-8-7 20:12
原帖由 gzj_06 于 2007-7-26 16:15 发表
有人知道是否可以在已有Excel文件的末尾追加内容


每次新建记录后做一个addnew的动作
然后每次保存结果时先movelast
作者: kelly-可儿    时间: 2007-8-8 09:49
好深哦
作者: wj1983654    时间: 2007-8-8 12:48
学习中……
作者: billygao    时间: 2007-8-9 07:27
这个函数库有价值啊!
作者: 风过无息    时间: 2007-8-9 07:34
看看这个:
http://www.51testing.com/?3528/action_viewspace_itemid_1189.html
作者: mayuping0516    时间: 2007-8-12 13:33
很好 顶一下sdlkfj3
作者: wasd2615    时间: 2007-8-12 23:50
mk
作者: wangze1123    时间: 2007-8-13 16:20
我怎么看不懂啊
作者: vaguely    时间: 2007-8-17 11:45
thanks
作者: jiangdanyang    时间: 2007-8-17 15:29
积分+1
作者: jiangdanyang    时间: 2007-8-17 15:34
刚才没下载,怎么也扣了我积分啊?
作者: nedved1020    时间: 2007-8-20 10:20
正在想呢!!谢谢10楼的
作者: gzj_06    时间: 2007-8-22 16:48
原帖由 jiangdanyang 于 2007-8-17 15:34 发表
刚才没下载,怎么也扣了我积分啊?
肯定是你偷打开看了一下sdlkfj5
作者: gzj_06    时间: 2007-8-22 16:51
标题: 回复 #23 Jimmyshao 的帖子
原帖由 Jimmyshao 于 2007-8-7 20:12 发表
每次新建记录后做一个addnew的动作
然后每次保存结果时先movelast
谢谢,能否提供两句代码示例
作者: temdow    时间: 2007-8-22 17:18
最近也在研究这个,一时想不通
作者: yuandjing    时间: 2007-8-23 13:11
与大家分享一下最近我写的代码,放入vbs就可以调用了
'读Excel文件元素
Public Function QTP_Read_Excel(pathway,sheetname,x,y)
        Dim srcData,srcDoc,ret
        set srcData = CreateObject("Excel.Application")
        srcData.Visible = True
        set srcDoc = srcData.Workbooks.Open(pathway)
        srcDoc.Worksheets(sheetname).Activate
        ret = srcDoc.Worksheets(sheetname).Cells(x,y).value
        srcData.Workbooks.Close
        Window("text:=Microsoft Excel").Close
        QTP_Read_Excel = ret
End Function

'写Excel文件元素并保存退出
Public Function QTP_Write_Excel(pathway,sheetname,x,y,content)
        Dim srcData,srcDoc,sp1,sp2,num,use,a1,a2,a3
        set srcData = CreateObject("Excel.Application")
        srcData.Visible = True
        set srcDoc = srcData.Workbooks.Open(pathway)
        srcDoc.Worksheets(sheetname).Activate
        srcDoc.Worksheets(sheetname).Cells(x,y).value = content
       
        sp1 = Split(pathway,".")
        sp2 = Split(sp1(0),"\")
        num = UBound(sp2)
        use = sp2(num)

        Set a1 = Description.Create()
        a1("text").value="Microsoft Excel - " + use + ".xls"
        a1("window id").value="0"

        Set a3 = Description.Create()
        a3("Class Name").value="WinObject"
        a3("text").value= use + ".xls"

        Window(a1).WinObject(a3).Type micCtrlDwn + "s" + micCtrlUp

        srcData.Workbooks.Close
        Set srcDoc = nothing
       
        Window("text:=Microsoft Excel").Close
End Function
作者: walker1020    时间: 2007-8-24 00:20
非常感谢yuandjing  提供 了这么好的材料,这下 可以研究一下怎么样把QTP的 Test Report 输出到 Excel里面了。呵呵!
作者: yabest    时间: 2007-8-24 01:39
其实对于这么固定格式的输出,直接在DataTable里添加一个名为Result的Sheet,并设计好列信息,运行时往里添加Case运行记录,运行结束后直接DataTable.Export就可以了,不用搞得那麻烦的。

象我们用的主控Test,就是这样子输出Case运行结果信息的,既好用,又简单。
作者: zhbinx    时间: 2007-8-27 13:04
看看
作者: yuandjing    时间: 2007-8-27 15:57
写Excel的函数我改了一下,原来的代码会因为Excel的版本不同而造成不稳定
现在OK了
'写Excel文件元素并保存退出
Public Function QTP_Write_Excel(pathway,sheetname,x,y,content)
        Dim srcData,srcDoc,sp1,sp2,num,use,a1,a2,a3
        set srcData = CreateObject("Excel.Application")
        srcData.Visible = True
        set srcDoc = srcData.Workbooks.Open(pathway)
        srcDoc.Worksheets(sheetname).Activate
        srcDoc.Worksheets(sheetname).Cells(x,y).value = content
       
'        sp1 = Split(pathway,".")
'        sp2 = Split(sp1(0),"\")
'        num = UBound(sp2)
'        use = sp2(num)

'        Set a1 = Description.Create()
'        a1("text").value="Microsoft Excel - " + use + ".xls"
'        a1("window id").value="0"

'        Set a3 = Description.Create()
'        a3("Class Name").value="WinObject"
'        a3("text").value= use + ".xls"

'        Window(a1).WinObject(a3).Type micCtrlDwn + "s" + micCtrlUp

        Dim WshShell
        Set WshShell=CreateObject("Wscript.Shell")
        WshShell.SendKeys "^s"
        wait(1)
       
        srcData.Workbooks.Close
        Set srcDoc = nothing
       
        Window("text:=Microsoft Excel").Close
End Function
作者: walker1020    时间: 2007-8-28 00:22
yuandjing ,你能否说一下 #42 中的许多语句被注释掉的原因吗?谢谢!
作者: yuandjing    时间: 2007-8-28 08:59
回walker1020大哥:
原来是想用描述性编程的思想实现点击ctrl+s进行保存操作Window(a1).WinObject(a3).Type micCtrlDwn + "s" + micCtrlUp
后来发现Excel版本不同,描述性编程的值也不同,有些认a1("text").value="Microsoft Excel - " + use + ".xls",有些认a1("text").value="Microsoft Excel - " + use
所以后来改用sendkey的方法:WshShell.SendKeys "^s"
来实现了crtl+s进行保存了,各个版本的excel就都适用了
作者: walker1020    时间: 2007-8-28 09:14
非常感谢yuandjing 的回复。原来是这样,yuandjing 考虑问题真周到,因为你还考虑到了各个Excel 的兼容性,受教了。 多谢!
作者: shoulamon    时间: 2007-8-28 11:36
学习了
作者: zhangj8826    时间: 2007-9-2 22:50
关注!
作者: 木卫十二    时间: 2007-9-3 09:47
标题: 回复 #42 yuandjing 的帖子
我有一个问题,就是pathway必须是绝对路径,对于脚本移置不大方便,有没有用相对路径的办法啊?sdlkfj6
作者: www1816    时间: 2007-9-3 09:57
学习中
作者: yuandjing    时间: 2007-9-4 15:53
原帖由 木卫十二 于 2007-9-3 09:47 发表
我有一个问题,就是pathway必须是绝对路径,对于脚本移置不大方便,有没有用相对路径的办法啊?sdlkfj6

我试了一下,相对路径是可以的,比如vbs保存在C:\vbs文件夹下,excel在c:\下
只要call QTP_Write_Excel("../xxx.xls","sheetname",1,1,"content")就可以了
作者: xinxiachen    时间: 2007-9-4 20:31
sdlkfj2
作者: three116    时间: 2007-9-14 16:23
好 代码
作者: three116    时间: 2007-9-14 16:23
顶一下
作者: bamboosll    时间: 2009-7-3 11:54
这个lib很有用啊!
作者: denghuirong    时间: 2010-1-22 11:22
标题: 学习了
多谢
作者: Tesherlock    时间: 2010-1-25 17:00
好东西,学习了,3Q~
作者: gold_85    时间: 2010-2-22 16:37
好东西,留个记号..
作者: hello97    时间: 2010-2-24 01:03
好东西留下了
作者: 醉看夕阳红    时间: 2010-2-26 14:12
新人顶贴
作者: zhengpeipei    时间: 2010-2-26 16:10
学习了




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2