51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3341|回复: 13
打印 上一主题 下一主题

[求助] qtp 如何 把XML导成EXCEL (各位帮忙)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-8-7 13:03:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
xml 文件:
<Message>
    <Head>
        <Id>001</Id>
        <From>上海/From>
        <To>新加坡</To>
        <Cc>test<Cc/>
    </Head>
    <Body>
        <INFO>
            <NAME>紫龙</NAME>
            <NO>001</NO>
        </INFO>
        <INFO>
            <NAME>星矢</NAME>
            <NO>002</NO>
         </INFO>
     </Body>
</Message>

如何把这个 XML导出EXCEL成:
001 上海 新加坡 紫龙 001
001 上海 新加坡 星矢 002

急求方法,非常困混,
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

14#
发表于 2009-8-18 11:51:51 | 只看该作者
GetNodeValue "D:\test.xml", "Id"
GetNodeValue "D:\test.xml", "From"
GetNodeValue "D:\test.xml", "To"
GetNodeValue "D:\test.xml", "NAME"
  1. Function GetNodeValue (ByVal strXmlFilePath,ByVal xmlNodeName)
  2.         Dim xmlDoc,xmlRoot
  3.         Set xmlDoc = CreateObject("Microsoft.XMLDOM")
  4.         xmlDoc.async = False  
  5.         xmlDoc.load strXmlFilePath
  6.         If xmlDoc.parseError.errorCode <> 0 Then
  7.                 MsgBox "Wrong XML Format, caused by "& Chr(13) &  xmlDoc.parseError.reason
  8.                 Exit Function              
  9.         End If
  10.         Set xmlElem = xmlDoc.getElementsByTagName(xmlNodeName)
  11.                 For i = 0 To xmlElem.length - 1
  12.                         Set xmlItem = xmlElem.item(i).ChildNodes.Item(0)        
  13.                                 MsgBox xmlNodeName&" "&xmlItem.nodeValue
  14.                 Next
  15.                 Set xmlItem = Nothing
  16.                 Set xmlElem = Nothing
  17.                 Set xmlDoc = Nothing
  18. End Function
复制代码
取到值之后写入Excel就不用我再多写了吧
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2009-8-17 21:12:19 | 只看该作者
Excel可以打开XML的,说明已经有现成方法了,看能不能用vbs调用一下啊
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2009-8-8 17:33:46 | 只看该作者
我是直接在excel中写了个模版,然后导出XML文件。然后写了一些操作XML的函数来写XML文件的……
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-8-25 11:11
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    11#
    发表于 2009-8-8 14:00:33 | 只看该作者
    关注
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2009-8-8 11:09:29 | 只看该作者
    OK 谢谢啊,如果 需要定位到一个<NAME>星矢</NAME>

    把他读出来,当配置信息用,最简单的方法是???
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2009-8-8 02:19:45 | 只看该作者
    有点晚了~随便写写睡觉去了~没写啥注释自己研究去吧,我对xml也不老熟悉的-.-!

    Dim xmlDoc,Head
    Set xmlDoc = CreateObject("Microsoft.XMLDOM")
    xmlDoc.load "D:\QTP\Test.xml"

    Set Root = xmlDoc.documentElement
    Set Childs = Root.childNodes
    Set Head = Childs.item(0)
    Set Body = Childs.item(1)
    Set varID = Head.childNodes.item(0)
    Set varFrom = Head.childNodes.item(1)
    Set varTo = Head.childNodes.item(2)
    Set varCc = Head.childNodes.item(3)

    i = 1
    For Each BodyChild In Body.childNodes
            Set varName = BodyChild.childNodes.item(0)
            Set varNo = BodyChild.childNodes.item(1)

            DataTable.SetCurrentRow(i)
            DataTable.Value(1, dtGloabalSheet) = varID.firstChild.nodeValue
            DataTable.Value(2, dtGloabalSheet) = varFrom.firstChild.nodeValue
            DataTable.Value(3, dtGloabalSheet) = varTo.firstChild.nodeValue
            DataTable.Value(4, dtGloabalSheet) = varCc.firstChild.nodeValue
            DataTable.Value(5, dtGloabalSheet) = varName.firstChild.nodeValue
            DataTable.Value(6, dtGloabalSheet) = varNo.firstChild.nodeValue
            i = i + 1
    Next

    DataTable.Export ("D:\QTP\Test.xls")
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2009-8-8 00:53:10 | 只看该作者
    如果只要提取
    Id 001
    From 上海
    to 新加坡
    name 星矢
    name 紫龙

    可以实现吗??? 请求帮忙!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2009-8-7 23:23:04 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2009-8-7 20:37:15 | 只看该作者
    从Excel 导到 XML还好弄点,像楼主要求的这种反方向就困难多了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2009-8-7 17:53:21 | 只看该作者
    有高人 解答下吗??? 很着急
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2009-8-7 14:23:31 | 只看该作者
    如何 判断一个节点是文本的 或则仍然是节点? 求解
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2009-8-7 13:47:32 | 只看该作者
    是这样的,上海市头信息,所有body的信息 使用的 头信息都一样

    如果解析到excel中,头就重复导出

    那请问 可以是实现这样吗:
    Id 001
    From 上海
    to 新加坡
    name 星矢
    name 紫龙
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2#
    发表于 2009-8-7 13:30:35 | 只看该作者
    你这个代码的工作量可不小呢……
    首先要用VBS读取xml的文件,将xml文件的内容组织成一个二维数组
    其次还是用vbs把刚才得到的那个二维数组写进excel。
    而且那个xml文件组织的好象也有问题,比如说从xml文件中,根本看不出来为什么紫龙和要上海放在一行,如果紫龙和上海都属于同一个对象的属性,那么应该把他们放在同一个节点下才对哈
    具体的代码实在是没精力去写了,等待高人帖代码吧。

    [ 本帖最后由 dreamever 于 2009-8-7 13:33 编辑 ]
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-27 12:53 , Processed in 0.086229 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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