• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
笨笨笨笨
博客园    首页    新随笔    联系   管理    订阅  订阅

将GlobalSheet中的数据逐一插入到对应WebTable中

这几天在做一个大量数据输入的操作——按顺序将dtGlobalSheet里20行30列的数据一个一个复制到一个20行30列的WebTable表里。
一开始录入数据时:
'第一行第一列
Browser("XXX").Page("XXX").Frame("XXX").WebEdit("ctl00$cph$grd_P2009001_1").Set "11"
'第一行第二列
Browser("XXX").Page("XXX").Frame("XXX").WebEdit("ctl00$cph$grd_P2009001_2").Set "12"
'第二行第一列
Browser("XXX").Page("XXX").Frame("XXX").WebEdit("ctl00$cph$grd_P2009002_1").Set "21"

'如果只修改单元格,不但麻烦,而且会遇到无法识别的问题,如:
'直接写第六行第一列,但并没有录制第六行,会提示该对象无法识别
Browser("XXX").Page("XXX").Frame("XXX").WebEdit("ctl00$cph$grd_P2009006_1").Set "61"

'所以,我决定采用WebTable的方式进行,我的方法如下:
Set w_WebTable = Browser("XXX").Page("XXX").Frame("XXX").WebTable("XXX")
For I = 1 To w_WebTable.RowCount
  For J =1 To w_WebTable.ColumnCount(I)
     '此行希望获取WebTable下的该单元格
     Set CellValue = w_WebTable.ChildItem(I, J, "WebEdit" , 0 )
     '此行希望将dtGlobalSheet中的值赋给该单元格
     CellValue.Set DataTable("line"&J, dtGlobalSheet)
  Next
Next
但是获取单元格有问题,不知道该怎么改才能满足需求——事实上,我根本就没明白 w_WebTable.ChildItem的确切含义。
到网上问了一下,有个兄弟提供了解决方案:

Set w_WebTable = Browser("XXX").Page("XXX").Frame("XXX").WebTable("XXX")
 strRowCount = w_WebTable.RowCount
'w_WebTable.HighLight

For intRow = 1 To strRowCount
       strColCount =w_WebTable.ColumnCount(intRow)
        For intCol = 1 To strColCount     
             w_WebTable.ChildItem(intRow,intCol,"WebEdit",0).Set DataTable.GlobalSheet.GetParameter("line"&intCol).ValueByRow(intRow)
        Next
Next

试过还是有问题,总是说什么运行错误,但他无意中加的这句w_WebTable.HighLight,让我看到,QTP取的是整个Table,而这个Table包括了前三列只读的部分,于是,稍加修改,将其改为:
 

Set w_WebTable = Browser("XXX").Page("XXX").Frame("XXX").WebTable("XXX")
 strRowCount = w_WebTable.RowCount
'w_WebTable.HighLight

For intRow = 1 To strRowCount
       strColCount =w_WebTable.ColumnCount(intRow)
        For intCol = 4 To strColCount     
             w_WebTable.ChildItem(intRow,intCol,"WebEdit",0).Set DataTable.GlobalSheet.GetParameter("line"&(intCol-3)).ValueByRow(intRow)
        Next
Next

运行成功!
学到几点:
1、如果WEB页面上单元格非常多,就通过捕获WebTable的方式进行单元格填写;
2、如果WebTable经常出错,就通过WebTable.HighLight去看究竟捕获的包含哪些部分;
3、WebTable.ChildItem(intRow,intCol,"WebEdit",0)指的是WebTable上第intRow行,第intCol列,名为WebEdit的单元格,通过Set将DataTable中Sheet(如GlobalSheet)的值逐一的赋值给Web上该单元格。
posted @ 2009-09-11 10:26  笨笨笨笨  阅读(291)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3