工作中常用的QTP操作Excel函数
前言
本文只是对工作中常用的EOM相关函数的整理,并不是要写个大而全的操作手册,如果想对EOM有更多的了解可以参考QTP的帮助文档或查看QTP安装目录\CodeSamplesPlus\UsingExcel.vbs文件。
自动化测试中,为了达到数据与脚本分离的目的,我们需要一种能够统一管理测试数据的工具。QTP自带的DataTable非常好用,但是不利于管理和维护,这时候Excel就进入了我们的视线,QTP提供了对Excel的强大支持,通过EOM(Excel Automation Object Model)即Excel自动化对象模型来对Excel进行操作,下面就介绍一下我在工作中经常用到的Excel操作函数,也当作一次整理和总结。
写单元格
功能:完成对Excel中指定单元格的写入
参数:路径,sheet,单元格行号列号,需写入的值
在D盘根目录下新建qtp.xlsx文件。
'向Excel中指定单元格写入数据
Function write_cell(filename,sheetname,number_of_row,number_of_column,value) 'filename:Excel完整路径
'sheetname:sheet名称
Dim excelapp,excelsheet,excelbook
'生成Excel对象
set excelapp=createobject("Excel.Application")
'打开Excel
set excelbook=excelapp.WorkBooks.open(filename)
'切换sheet
Set excelsheet=excelbook.Worksheets(sheetname)
'写入值
excelsheet.cells(number_of_row,number_of_column)=value
'保存退出Excel
excelapp.Workbooks().Save
excelapp.Workbooks().Close
excelapp.Quit
Set excelapp=nothing
End Function write_cell "D:\qtp.xlsx","sheet1",,,"hello,qtp"
执行后Excel中第一行第一列的值已设置

设置单元格样式
功能:设置单元格的颜色、字体等
参数:路径,sheet,单元格行号列号,字体颜色,背景颜色,对齐方式,字体,字号
Function set_style(filename,sheetname,number_of_row,number_of_column,font_index,back_index,align,font_name,font_size)
Dim excelapp,excelsheet,excelbook
set excelapp=createobject("Excel.Application")
set excelbook=excelapp.WorkBooks.open(filename)
Set excelsheet=excelbook.Worksheets(sheetname)
'设置背景色
excelsheet.Cells(number_of_row,number_of_column).Interior.ColorIndex=back_index
'设置字体颜色
excelsheet.Cells(number_of_row,number_of_column).Font.ColorIndex=font_index
'设置字体类型
excelsheet.Cells(number_of_row,number_of_column).Font.Name=font_name
'设置字体大小
excelsheet.Cells(number_of_row,number_of_column).Font.Size=font_size
'设置单元格排列方式
excelsheet.Cells(number_of_row,number_of_column).HorizontalAlignment=align
'保存关闭Excel
excelapp.Workbooks().Save
excelapp.Workbooks().Close
excelapp.Quit
End Function '红色背景,黄色字体,居中显示,微软雅黑18号字体
set_style "D:\qtp.xlsx","sheet1",,,,,,"微软雅黑",
效果图,关于颜色的Index值可以参考颜色index列表

写多行多列
功能:有时测试中需要大批量的写入数据,每个单元格独立写入耗时耗力,通过数组形式一次写入则方便许多
参数:路径,sheet,写入的数组
'写多行多列
Function write_multiple(filename,sheetname,arr) 'filename:Excel完整路径
'sheetname:sheet名称
Dim excelapp,excelsheet,excelbook
'生成Excel对象
set excelapp=createobject("Excel.Application")
'打开Excel
set excelbook=excelapp.WorkBooks.open(filename)
'切换sheet
Set excelsheet=excelbook.Worksheets(sheetname)
'写入值
For i= to ubound(arr,)
For j= to ubound(arr,)
excelsheet.cells(i,j)=arr(i,j)
Next
Next
'保存退出Excel
excelapp.Workbooks().Save
excelapp.Workbooks().Close
excelapp.Quit
Set excelapp=nothing
End Function '定义二维数组
Dim arr(,)
arr(,)="hello"
arr(,)="qtp"
arr(,)="hi"
arr(,)="test"
'写入Excel
write_multiple "D:\qtp.xlsx","sheet1",arr

读取Excel文件以数组形式返回
功能:以二维数组的形式返回Excel中的数据
参数:路径,sheet
'读取Excel文件,以数组形式返回
Function read_excel(filename,sheetname)
Dim excelapp,excelsheet,excelbook,number_of_row,number_of_column,arr()
set excelapp=createobject("Excel.Application")
excelapp.DisplayAlerts=Flase
set excelbook=excelapp.WorkBooks.open(filename)
Set excelsheet=excelbook.Worksheets(sheetname)
'获得当前sheet总行数和列数
number_of_row=excelsheet.UsedRange.Rows.Count
number_of_column=excelsheet.UsedRange.Columns.Count
'设置数组范围
ReDim arr(number_of_row,number_of_column)
'将当前sheet中的数据放入数组
For i= to number_of_row
For j= to number_of_column
arr(i,j)=excelsheet.cells(i,j)
Next
Next read_excel=arr
'保存关闭Excel
excelapp.Workbooks().Save
excelapp.Workbooks().Close
excelapp.DisplayAlerts=true
excelapp.Quit
End Function Dim data
data=read_excel("D:\qtp.xlsx","sheet1")
For i= to ubound(data,)
For j= to ubound(data,)
print "第"&i&"行第"&j&"列="&data(i,j)
Next
Next
获取数据在Excel中的起始和结束行号
功能:获取字符串在Excel中开始和结束的行号
参数:路径,sheet,匹配字符串
'匹配脚本名称在Excel‘中占几行
Function get_range(filename,sheetname,pattern_str)
Dim excelapp,excelsheet,excelbook,number_of_row,arr(),number_of_begin,number_of_end,reg
'设置数组范围
ReDim arr(,)
set excelapp=createobject("Excel.Application")
excelapp.DisplayAlerts=Flase
set excelbook=excelapp.WorkBooks.open(filename)
Set excelsheet=excelbook.Worksheets(sheetname)
'获得当前sheet总行数
number_of_row=excelsheet.UsedRange.Rows.Count
'生成正则表达式对象
Set reg=new RegExp
reg.Pattern=pattern_str
reg.IgnoreCase=false '查找开始及终止行数
For i= to number_of_row
if reg.Test(excelsheet.cells(i,)) then
number_of_begin=i
For j=number_of_begin to number_of_row
if not reg.Test(excelsheet.cells(j,)) then
number_of_end=j-
Exit for
End if
If j=number_of_row Then
number_of_end=number_of_row
End If
Next
Exit for
End if
Next '起始行数
arr(,)=number_of_begin
'结束行数
arr(,)=number_of_end
get_range=arr
'保存关闭Excel
excelapp.Workbooks().Save
excelapp.Workbooks().Close
excelapp.DisplayAlerts=true
excelapp.Quit End Function
将qtp.xlsx中写入如下内容

调用函数查找test开头的字符串在文件中的起止行号
Dim begin_end
begin_end=get_range("D:\qtp.xlsx","sheet1","test[0-9]+")
print "从第"&begin_end(,)&"行开始到第"&begin_end(,)&"行结束"

Excel操作类
如果对某一Excel的操作很集中,可以将对Excel的操作写成类的形式
Class OperateExcel
Public filename,sheetname,excelapp,excelsheet,excelbook
'实现构造方法,类实例化时自动执行
Public default Function initilize(path,name)
filename=path
sheetname=name
setExcelModel
set initilize=Me
End Function
Private function setExcelModel()
set excelapp=createobject("Excel.Application")
set excelbook=excelapp.WorkBooks.open(filename)
Set excelsheet=excelbook.Worksheets(sheetname)
End Function
Function writeCell(number_of_row,number_of_column,value)
excelsheet.cells(number_of_row,number_of_column)=value
End Function
Function setColor(number_of_row,number_of_column,back_index)
'设置指定单元格背景颜色
excelsheet.Cells(number_of_row,number_of_column).Interior.ColorIndex=back_index
End Function
Function readExcel
content
...
End Function
.....
Function closeExcel
'保存关闭Excel
excelapp.Workbooks().Save
excelapp.Workbooks().Close
excelapp.Quit
End Function
End Class
Function get_class(excelname,sheet)
set get_class=(new OperateExcel)(excelname,sheet)
End Function
这样使用起来很方便,只要记得在操作完成后调用关闭方法就可以了
Dim o_e
set o_e=get_class("D:\qtp.xlsx","sheet1")
o_e.writeCell ,,"kddddkk"
o_e.setColor ,,
'关闭Excel对象
o_e.closeExcel
工作中常用的QTP操作Excel函数的更多相关文章
- 工作中常用Git指令操作
常用Git指令总结 前阵子有几天好不顺,可谓是喝水都呛着,更何况被Git给呛着了,还不轻,哈哈.所以打算总结一下自己在工作使用到Git相关的东西以及和大家探讨使用GIt的心得体会.于是,关于Git的的 ...
- 工作中常用的mysql操作
一.在一个数据库中定义的存储过程或者是函数在另一数据库的存储过程中引用 1.我首先在数据库player_db中构建了一个函数:p_exp_to_level BEGIN ; ; RETURN v_lev ...
- 工作中常用的Git操作--------(一)
今天主要记录一下平常工作当中使用的git操作: 1.git的安装这里省略: 2.git的操作指令: 在项目开发中,经常是拉去经理已经搭建好的一个项目,也就是给我们一个git地址.比如:http://g ...
- 工作中常用的Git操作
粘贴自:微信公众号:程序员共成长 分支操作: git branch 创建分支 git branch -b 创建并切换到新建的分支上 git checkout 切换分支 git branch 查看分支列 ...
- git工作中常用操作总结
这篇文章主要记录下工作中常用的git操作.主要是对之前文章记录的问题做个总结,这个其实在idea中操作更加简单 别名配置 在敲git 命令时,其实可以使用别名,比如 commit可以配置为ci 下面是 ...
- LoadRunner中常用的字符串操作函数
LoadRunner中常用的字符串操作函数有: strcpy(destination_string, source_string); strc ...
- QTP操作excel文档
对于QTP操作excel的大前提是,保证组建服务里的DCOM配置里存在 microsoft excel application ,具体的查看方式是,在运行框中输入dcomcnfg,然后会打开组件服务的 ...
- 工作中常用的js、jquery自定义扩展函数代码片段
仅记录一些我工作中常用的自定义js函数. 1.获取URL请求参数 //根据URL获取Id function GetQueryString(name) { var reg = new RegExp(&q ...
- 收集一些工作中常用的经典SQL语句
作为一枚程序员来说和数据库打交道是不可避免的,现收集一下工作中常用的SQL语句,希望能给大家带来一些帮助,当然不全面,欢迎补充! 1.执行插入语句,获取自动生成的递增的ID值 INSERT INTO ...
随机推荐
- 导入sql时报日期类型错误
导入的脚本中有的日期类型数据是:0000-00-00 00:..这种格式的. 需要把这种格式修改一下.有的mysql版本不支持这种0000.设置成当前时间即可
- oracle 触发器number判断空值,:NEW赋值,for each row,sql变量引号,to_date,to_char
1.number类型在库中可能存在null这种数据 判断是否为空时要用如下: IF(nvl(:NEW.BACAH,0) <>0) 不能用IF(BACAH IS NOT NULL) 2. 2 ...
- 多线程 - 线程同步锁(lock、Monitor)
1. 前言 多线程编程的时候,我们不光希望两个线程间能够实现逻辑上的先后顺序运行,还希望两个不相关的线程在访问同一个资源的时候,同时只能有一个线程对资源进行操作,否则就会出现无法预知的结果. 比如,有 ...
- 关于ios8斯坦福公开课第二课
在这个课程中,我们遇到了这样的代码 @IBAction func oprate(sender: UIButton) { let opration = sender.currentTitle! if u ...
- (java)从零开始之-反射Reflect
反射: 当一个字节码文件加载到内存的时候,jvm会对该字节码进行解剖,然后会创建一个对象的Class对象,把字节码文件的信息全部都存储到该Class对象中,我们只要获取到Class对象,我们就可以使用 ...
- nextDay、beforeDay以及根据nextDay(beforeDay)求解几天后的日期,几天前的日期和两个日期之间的天数
实现代码: package com.corejava.chap02; public class Date { private int year; private int month; private ...
- 通用数据挖掘[ZZ]
一.什么是数据挖掘?许多人认为数据挖掘更像是一门哲学,或数学的组成部分,而不是业务需求的实际解决方案.您可以从采用的各种定义中看出这一点,例如:“数据挖掘是对非常大型的数据进行的研究和分析,采用自动或 ...
- C# ToString常用技巧总结
ToString是在开发中最常用的操作,其作用是将其它类型以字符串类型表示.例如: int i=2;i.ToString() //”2″Object o = new Object();o.ToStri ...
- 火狐无法访问本机IIS部署的网站,弹出:此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求 的解决办法
关于火狐浏览器访问本机IIS部署的网站弹出“此地址使用了一个通常用于网络浏览以外目的的端口.出于安全原因,Firefox 取消了该请求”这个错误(错误截图如下): 解决方法如下: 1.打开火狐浏览器, ...
- 实例:用jQuery实现垂直和水平下拉 菜单
主要是利用jQuery来实现垂直菜单和水平菜单.实现效果如图: 第一步,创建一个HTML文件,如图,包含两个ul.当然把jquery库也引入进去了. <!DOCTYPE html> < ...