51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 18811|回复: 87
打印 上一主题 下一主题

[原创] QTP:EXCEL报告输出格式,已经上传源码文件

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-11-23 00:41:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个报告输出是根据网上的Reporter9框架修改出来得,简化了一些,我个人觉得实用性比较高一点,最近看到论坛里面很多人问这个问题,希望能帮到大家,
很多朋友复制论坛里面的代码来时使用碰到了问题,现在附上 源码文件,收费的 哈哈!只是为了大家多给论坛出点力
谢绝匆匆过客 只为会员服务
'************************************************************************************************
'******************XXXXXXXXXxXXXXX有限公司--XXXXX系统自动化脚本******************************
'************************************************************************************************
'****************       脚本名称: 报告模块                                   ********************
'****************       脚本版本: 1.0                                        ********************
'****************       脚本描述: 测试报告结果输出                 ********************
'****************       脚本作者: 小孩 /51TESTING                          ********************
'****************       编写时间: 2008-11-11                                 ********************
'****************       脚本修改:                                            ********************
'****************       修改时间:                                            ********************
'****************       修改备注:                                            ********************
'************************************************************************************************
'************************************************************************************************

'参数: ReportExcelFile 报告输出的路径
Public ReportExcelFile
ReportExcelFile = Environment ("TestDir")& "\" & " 测试结果" & Date & "-"& Hour(Now) & Minute(Now)& Second(Now) & ".xls"

'描述:GetIP    捕获运行脚本的电脑IP
Public Function GetIP
    ComputerName="."
    Dim objWMIService,colItems,objItem,objAddress
    Set objWMIService = GetObject("winmgmts:\\" & ComputerName & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
    For Each objItem in colItems
        For Each objAddress in objItem.IPAddress
            If objAddress <> "" then
                GetIP = objAddress
                Exit Function
            End If
        Next
    Next
End Function

'描述:Report       报告函数
'参数: sStatus      报告的状态分别为FAIL、PASS和waring
'参数: sDetails     注释,用来形容测试内容
Public Function Report(sStatus,sDetails)
'定义变量
Dim fso
Dim oExcel
Dim ExcelFile
Dim TestcaseName
Dim objWorkBook
Dim objSheet
Dim NewTC
Dim Status


Set fso = CreateObject("scripting.FileSystemObject")
Set oExcel = CreateObject("Excel.Application")

Status=UCase(sStatus)
oExcel.Visible = false 'True  
   


'设置Excel报告样式
If  Not fso.FileExists(ReportExcelFile)Then
  oExcel.Workbooks.Add
  
  '获取工作簿的第一个Sheet页
  Set objSheet = oExcel.Sheets.Item(1)
  oExcel.Sheets.Item(1).Select
  
  With objSheet
   .Name = "测试结果"
   '设置列宽
   .Columns("A:A").ColumnWidth = 5
   .Columns("B:B").ColumnWidth = 35
   .Columns("C:C").ColumnWidth = 12.5
   .Columns("D:D").ColumnWidth = 60
   .Columns("A:D").HorizontalAlignment = -4131
   .Columns("A:D").WrapText = True
   '设置显示区域的字体类型和大小
   .Range("A:D").Font.Name = "Arial"
   .Range("A:D").Font.Size = 10
   
   '设置文件头格式
   .Range("B1").Value = "测试结果"
   .Range("B1:C1").Merge
    '设置文件头格式字体和颜色
   .Range("B1:C1").Interior.ColorIndex = 53
   .Range("B1:C1").Font.ColorIndex = 19
   .Range("B1:C1").Font.Bold = True
   
   '设置执行的日期和时间
   .Range("B3").Value = "测试日期:"
   .Range("B4").Value = "执行时间:"
   .Range("B5").Value = "结束时间:"
   .Range("B6").Value = "执行时长: "   
   .Range("C3").Value = Date
   .Range("C4").Value = Time
   .Range("C5").Value = Time
   .Range("C6").Value = "=R[-1]C-R[-2]C"
   .Range("C6").NumberFormat = "[h]:mm:ss;@"
   
   '设置日期和时间cell的边界
   .Range("C3:C8").HorizontalAlignment = 4 '右边对齐
   .Range("C3:C8").Font.Bold = True
   .Range("C3:C8").Font.ColorIndex = 7
   .Range("B3:C8").Borders(1).LineStyle = 1
   .Range("B3:C8").Borders(2).LineStyle = 1
   .Range("B3:C8").Borders(3).LineStyle = 1
   .Range("B3:C8").Borders(4).LineStyle = 1
   
   '设置日期和时间Cell的样式
   .Range("B3:C8").Interior.ColorIndex = 40
   .Range("B3:C8").Font.ColorIndex = 12
   .Range("C3:C8").Font.ColorIndex = 7
   .Range("B3:A8").Font.Bold = True
   .Range("B7").Value = "执行总数:"
   .Range("C7").Value = "0"
   .Range("B8").Value = "测试机器:"
   .Range("C8").Value =GetIP()
   .Range("B10").Value = "测试业务"
   .Range("C10").Value = "结果"
   .Range("D10").Value = "注释"
   
   '为Result Summery设置格式
   .Range("B10:D10").Interior.ColorIndex = 53
   .Range("B10:D10").Font.ColorIndex = 19
   .Range("B10:D10").Font.Bold = True
   
   '为Result Summery设置边界
   .Range("B10:D10").Borders(1).LineStyle = 1
   .Range("B10:D10").Borders(2).LineStyle = 1
   .Range("B10:D10").Borders(3).LineStyle = 1
   .Range("B10:D10").Borders(4).LineStyle = 1
   .Range("B10:D10").HorizontalAlignment = -4131
   .Range("C11:C1000").HorizontalAlignment = -4131
   .Columns("B:D").Select
   ' .Columns("B:D").Autofit
   .Range("B11").Select  
  End With
  oExcel.ActiveWindow.FreezePanes = True
  oExcel.ActiveWorkbook.SaveAs ReportExcelFile
  oExcel.Quit
  Set objSheet = Nothing
End If

TestcaseName = Environment("TCase")
Set objWorkBook = oExcel.Workbooks.Open(ReportExcelFile)
Set objSheet = oExcel.Sheets("测试结果")

With objSheet
'设置行数和是否NewTc标识
  Environment.Value("Row")  = .Range("C7").Value + 11
  NewTC = False

  If TestcaseName <> objSheet.Cells(Environment("Row")-1,2).value Then
      .Cells(Environment("Row"),2).value = TestcaseName
      .Cells(Environment("Row"), 3).Value = Status
      .Cells(Environment("Row"), 4).value = sDetails
  
   Select Case Status
       Case "FAIL"
            .Range("C" & Environment("Row")).Font.ColorIndex = 3
       Case "PASS"
            .Range("C" & Environment("Row")).Font.ColorIndex = 50
                            Case "WARNING"
            .Range("C" & Environment("Row")).Font.ColorIndex = 5
   End Select

  NewTC = True
  .Range("C7").Value = .Range("C7").Value + 1
  '设置边界
  .Range("B" & Environment("Row") & ":D" & Environment("Row")).Borders(1).LineStyle = 1
  .Range("B" & Environment("Row") & ":D" & Environment("Row")).Borders(2).LineStyle = 1
  .Range("B" & Environment("Row") & ":D" & Environment("Row")).Borders(3).LineStyle = 1
  .Range("B" & Environment("Row") & ":D" & Environment("Row")).Borders(4).LineStyle = 1
  '设置字体和颜色
  .Range("B" & Environment("Row") & ":D" & Environment("Row")).Interior.ColorIndex = 19
  .Range("B" & Environment("Row")).Font.ColorIndex = 53
  .Range("D" & Environment("Row")).Font.ColorIndex = 41
  .Range("B" & Environment("Row") & ":D" & Environment("Row")).Font.Bold = True


  End If

  If (Not NewTC) And (Status = "FAIL") Then
   .Cells(Environment("Row"), 3).Value = "Fail"
   .Range("C" & Environment("Row")).Font.ColorIndex = 3
  end If
  
  '更新结束时间
  .Range("C5").Value = Time
  
  .Columns("B:D").Select
  '.Columns("B:D").Autofit
End With
oExcel.ActiveWindow.FreezePanes = True

'保存结果
objWorkBook.Save
oExcel.Quit
Set objSheet = Nothing
Set objWorkBook = Nothing
Set oExcel = Nothing
Set fso = Nothing
End Function

[ 本帖最后由 小孩 于 2008-11-26 13:05 编辑 ]

[ 本帖最后由 walker1020 于 2009-8-16 21:45 编辑 ]

本帖子中包含更多资源

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

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

使用道具 举报

该用户从未签到

2#
发表于 2008-11-23 10:13:29 | 只看该作者

怎么有几个笑脸在里面阿
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-11-23 11:23:14 | 只看该作者
   论坛自动生成的 你可以到个人空间看
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-11-23 11:49:29 | 只看该作者
培训中 还没学到QTP  不过 很快了
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-11-23 17:37:56 | 只看该作者
好东西,支持!
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-11-23 21:33:04 | 只看该作者
刚好,最近在弄框架,有的参考了!
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-11-23 22:16:19 | 只看该作者
支持分享和原创
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-2-24 20:40
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2008-11-24 11:33:26 | 只看该作者
    If TestcaseName <> objSheet.Cells(Environment("Row")-1,2).value Then
    这个怎么理解
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2008-11-24 13:16:06 | 只看该作者
    If TestcaseName <> objSheet.Cells(Environment("Row")-1,2).value Then
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2008-11-24 23:28:59 | 只看该作者

    呵呵呵。。楼主辛苦!

    呵呵呵。。楼主辛苦!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2008-11-25 08:21:58 | 只看该作者
    楼主你好,我想问一下这个生成的EXCEL报告保存在那里了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2008-11-25 09:14:20 | 只看该作者
    笑脸是表情符号吧,:_D
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
     楼主| 发表于 2008-11-25 10:33:11 | 只看该作者
    ReportExcelFile = Environment ("TestDir")& "\" & " 测试结果" & Date & "-"& Hour(Now) & Minute(Now)& Second(Now) & ".xls"
    这个是路径 你可以修改成你想放得路径
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2015-11-3 20:42
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    14#
    发表于 2008-11-25 10:41:29 | 只看该作者
    顶下,好东西
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2008-11-25 14:18:22 | 只看该作者
    这个东东不错,呵呵,谢谢楼主
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2008-11-25 19:45:03 | 只看该作者
    楼主帮我看一下下面这段代码:

    Public ReportExcelFile
    ReportExcelFile = Environment ("TestDir")& "\" & " 测试结果" & Date & "-"& Hour(Now) & Minute(Now)& Second(Now) & ".xls"

    Dim fso
    Dim oExcel
    Dim ExcelFile
    Dim TestcaseName
    Dim objWorkBook
    Dim objSheet
    Dim NewTC
    Dim Status


    set fso = CreateObject("scrīpting.FileSystemObject")
    Set oExcel = CreateObject("Excel.Application")

    Status=UCase(sStatus)
    oExcel.Visible = false 'True  
       

    '设置Excel报告样式

      
      '获取工作簿的第一个Sheet页
      Set objSheet = oExcel.Sheets.Item(1)

      oExcel.Sheets.Item(1).Select
      
      With objSheet
       .Name = "测试结果"
       '设置列宽
       .Columns("A:A").ColumnWidth = 5
       .Columns("B:B").ColumnWidth = 35
       .Columns("C:C").ColumnWidth = 12.5
       .Columns("D").ColumnWidth = 60
       .Columns("A").HorizontalAlignment = -4131
       .Columns("A").WrapText = True
       '设置显示区域的字体类型和大小
       .Range("A").Font.Name = "Arial"
       .Range("A").Font.Size = 10
       
       '设置文件头格式
       .Range("B1").Value = "测试结果"
       .Range("B1:C1").Merge
        '设置文件头格式字体和颜色
       .Range("B1:C1").Interior.ColorIndex = 53
       .Range("B1:C1").Font.ColorIndex = 19
       .Range("B1:C1").Font.Bold = True
       
       '设置执行的日期和时间
       .Range("B3").Value = "测试日期:"
       .Range("B4").Value = "执行时间:"
       .Range("B5").Value = "结束时间:"
       .Range("B6").Value = "执行时长: "   
       .Range("C3").Value = Date
       .Range("C4").Value = Time
       .Range("C5").Value = Time
       .Range("C6").Value = "=R[-1]C-R[-2]C"
       .Range("C6").NumberFormat = "[h]:mm:ss;@"
       
       '设置日期和时间cell的边界
       .Range("C3:C8").HorizontalAlignment = 4 '右边对齐
       .Range("C3:C8").Font.Bold = True
       .Range("C3:C8").Font.ColorIndex = 7
       .Range("B3:C8").Borders(1).LineStyle = 1
       .Range("B3:C8").Borders(2).LineStyle = 1
       .Range("B3:C8").Borders(3).LineStyle = 1
       .Range("B3:C8").Borders(4).LineStyle = 1
       
       '设置日期和时间Cell的样式
       .Range("B3:C8").Interior.ColorIndex = 40
       .Range("B3:C8").Font.ColorIndex = 12
       .Range("C3:C8").Font.ColorIndex = 7
       .Range("B3:A8").Font.Bold = True
       .Range("B7").Value = "执行总数:"
       .Range("C7").Value = "0"
       .Range("B8").Value = "测试机器:"
      ' .Range("C8").Value =GetIP()
       .Range("B10").Value = "测试业务"
       .Range("C10").Value = "结果"
       .Range("D10").Value = "注释"
       
       '为Result Summery设置格式
       .Range("B1010").Interior.ColorIndex = 53
       .Range("B1010").Font.ColorIndex = 19
       .Range("B1010").Font.Bold = True
       
       '为Result Summery设置边界
       .Range("B1010").Borders(1).LineStyle = 1
       .Range("B1010").Borders(2).LineStyle = 1
       .Range("B10:D10").Borders(3).LineStyle = 1
       .Range("B10:D10").Borders(4).LineStyle = 1
       .Range("B10:D10").HorizontalAlignment = -4131
       .Range("C11:C1000").HorizontalAlignment = -4131
       .Columns("B:D").Select
       .Columns("B:D").Autofit
       .Range("B11").Select  
      End With
    就是在你那段代码的基础上改的,运行报如下图的错

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2008-11-25 19:49:12 | 只看该作者
    但我去掉这行代码(set fso = CreateObject("scrīpting.FileSystemObject"))还是会报错,如下图

    源代码见附件

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
     楼主| 发表于 2008-11-25 20:52:24 | 只看该作者
      因为 代码发上 论坛后,复制下来是不能直接运行的!要修改才行!
    因为很多字符都变了!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2008-11-26 08:31:41 | 只看该作者
    那个附件excel.doc里面有代码

    楼主帮我看一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2008-11-26 14:00:40 | 只看该作者
    谢谢楼主的分享。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-14 18:24 , Processed in 0.092973 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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