用QTP实现EXCEL数据比对

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3
不足之处
比较的sheet有数据不一致时,导出的EXCEL应该只导出有问题的sheet, 比较的sheet有数据不一致时,导出的EXCEL应该只导出有问题的sheet,但 sheet有数据不一致时 EXCEL应该只导出有问题的sheet 是现在会把所有的sheet都导出来; 是现在会把所有的sheet都导出来; sheet都导出来 在导出EXCEL时 有时会把BI的表导出来,可能是因为BI表该sheet的列数 在导出EXCEL时,有时会把BI的表导出来,可能是因为BI表该sheet的列数 EXCEL BI的表导出来 BI表该sheet TRAS表该sheet的列数要多 这个要在脚本里处理一下; 表该sheet的列数要多, 比TRAS表该sheet的列数要多,这个要在脚本里处理一下; 导出的sheet中表尾不是数据区域的行数时,只是通过查找“注” 中表尾不是数据区域的行数时, 除去TRAS导出的 导出的 中表尾不是数据区域的行数时 只是通过查找“ 这样不能适合所有的情况,有些情况是表尾有两行,还有一行是页码; 字,这样不能适合所有的情况,有些情况是表尾有两行,还有一行是页码;
4
EXCEL对象 对象
Dim oExcelobj,osrcExcel,odisExcel Set oExcelobj=CreateObject("Excel.Application") oExcelobj.visible=false Set osrcExcel=oExcelobj.workbooks.open(srcPath) srcSheetCount=osrcExcel.worksheets.count Set odisExcel=oExcelobj.workbooks.open(disPath) disSheetCount=odisExcel.worksheets.count Excel对象有三个级别: Excel对象有三个级别: 对象有三个级别 一级为:oExcelobj(进程级) 一级为:oExcelobj(进程级) 二级为:workbooks(工作薄) 二级为:workbooks(工作薄) 三级为:worksheets(工作表) 三级为:worksheets(工作表)
2
解决方法
将TRAS导出的EXCLE作为标准数据,遍历TRAS导出的EXCEL中的sheet,在 TRAS导出的EXCLE作为标准数据,遍历TRAS导出的EXCEL中的sheet, 导出的EXCLE作为标准数据 TRAS导出的EXCEL中的sheet BI导出的EXCEL中查找相应的sheet,调用CompareExcel函数对两个sheet作比 BI导出的EXCEL中查找相应的sheet,调用CompareExcel函数对两个sheet作比 导出的EXCEL中查找相应的sheet CompareExcel函数对两个sheet 较;以下是CompareExcel函数的思路: 以下是CompareExcel函数的思路: CompareExcel函数的思路 (1)查找出两个sheet中为数字表元的起始行列号; 查找出两个sheet中为数字表元的起始行列号; sheet中为数字表元的起始行列号 (2)除去表尾不是数据区域的行数,求出实际的数据区域的行数; 去表尾不是数据区域的行数,求出实际的数据区域的行数; (3)如果行数一致,则比较,否则不比较该sheet; 如果行数一致,则比较,否则不比较该sheet; (4)在比较两sheet时,比较的是两个sheet的实际的数据区域; 在比较两sheet时 比较的是两个sheet的实际的数据区域; sheet sheet的实际的数据区域 遍历TRAS中当前sheet的所有列: 遍历TRAS中当前sheet的所有列: TRAS中当前sheet的所有列 1)如果TRAS中的sheet当前列不是隐藏的,求出BI中的sheet的相应列的列号,遍历 如果TRAS中的sheet当前列不是隐藏的,求出BI中的sheet的相应列的列号, TRAS中的sheet当前列不是隐藏的 BI中的sheet的相应列的列号 TRAS当前sheet的行 找到BI相应sheet的相应行数,比较两个表元的值; 当前sheet的行, BI相应sheet的相应行数 TRAS当前sheet的行,找到BI相应sheet的相应行数,比较两个表元的值; 2)如果TRAS中的sheet当前列是隐藏的,则不比较当前列,继续遍历查看下一列是 如果TRAS中的sheet当前列是隐藏的,则不比较当前列, TRAS中的sБайду номын сангаасeet当前列是隐藏的 否隐藏; 否隐藏; (5)将不一致的表元标记为红色; 将不一致的表元标记为红色; (6)导出有问题的excel; 导出有问题的excel; excel
用QTP实现EXCEL 数据比对
需求分析
本次总局升级,要求 中的相同的分析表, 本次总局升级,要求TRAS和BI中的相同的分析表,数据保持一致; 和 中的相同的分析表 数据保持一致; 这些分析表有如下相同点和不同点; 这些分析表有如下相同点和不同点; 相同点: 相同点: 多个分析表可以导出成一个EXCEL 即一个分析表为EXCEL中的一个sheet EXCEL, EXCEL中的一个sheet; 1. 多个分析表可以导出成一个EXCEL,即一个分析表为EXCEL中的一个sheet; TRAS导出的EXCEL中的sheet名称和BI导出的EXCEL中的sheet名称的前几位非汉 导出的EXCEL中的sheet名称和BI导出的EXCEL中的sheet 2. TRAS导出的EXCEL中的sheet名称和BI导出的EXCEL中的sheet名称的前几位非汉 字字符串相同; 字字符串相同; 表样相同;(少数BI的分析表会多出某些列) ;(少数BI的分析表会多出某些列 3. 表样相同;(少数BI的分析表会多出某些列) 不同点: 不同点: BI导出的EXCEL不会导出隐藏的行列 TRAS导出的EXCEL会导出隐藏列 导出的EXCEL不会导出隐藏的行列, 导出的EXCEL会导出隐藏列; 1. BI导出的EXCEL不会导出隐藏的行列,TRAS导出的EXCEL会导出隐藏列; TRAS和BI中导出EXCLE相应表元的行列号不相同 中导出EXCLE相应表元的行列号不相同; 2. TRAS和BI中导出EXCLE相应表元的行列号不相同; TRAS导出的EXCLE,其中会把“ 导出的EXCLE 导出到合并表元, BI中是最后 中是最后2 3. TRAS导出的EXCLE,其中会把“注:”导出到合并表元,而BI中是最后2行贴一 个标签;( ;(如 YB3表 个标签;(如:YB3表)
6
设置指定行的高度(单位: )(1 0.035厘米),以第二行为例 厘米),以第二行为例: 8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例: 1厘米 oExcel.ActiveSheet.Rows(2).RowHeight = 1/0.035 ' 1厘米 在第8行之前插入分页符: 9) 在第8行之前插入分页符: oExcel.WorkSheets(1).Rows(8).PageBreak = 1 在第8列之前删除分页符: 10) 在第8列之前删除分页符: oExcel.ActiveSheet.Columns(4).PageBreak = 0 指定边框线宽度: 11) 指定边框线宽度: oExcel.ActiveSheet.Range( "B3:D4" ).Borders(2).Weight = 3 61- 左 2- 右 3- 顶 4- 底 5- 斜 ( \ ) 6- 斜 ( / ) 清除第一行第四列单元格公式: 12) 清除第一行第四列单元格公式: oExcel.ActiveSheet.Cells(1,4).ClearContents 设置第一行字体属性: 13) 设置第一行字体属性: "隶书 隶书" oExcel.ActiveSheet.Rows(1) = "隶书" oExcel.ActiveSheet.Rows(1).Font.Color = clBlue oExcel.ActiveSheet.Rows(1).Font.Bold = True oExcel.ActiveSheet.Rows(1).Font.UnderLine = True
5
知识点
VBS控制Excel常见方法 VBS控制Excel常见方法 控制Excel 对象: 首先创建 Excel 对象: oExcel = CreateObject( "Excel.Application" ) 显示当前窗口: 1) 显示当前窗口: oExcel.Visible = True 标题栏: 2) 更改 Excel 标题栏: "应用程序调用 oExcel.Caption = "应用程序调用 Microsoft Excel" 添加新工作 工作簿 3) 添加新工作簿: oExcel.WorkBooks.Add 打开已存在的工作簿: 4) 打开已存在的工作簿: "C:\Excel\ oExcel.WorkBooks.Open( "C:\Excel\Demo.xls" ) 设置第2个工作表为活动工作表: 5) 设置第2个工作表为活动工作表: oExcel.WorkSheets(2).Activate 或 oExcel.WorksSheets( "Sheet2" ).Activate 给单元格赋值: 6) 给单元格赋值: "第一行第四列 第一行第四列" oExcel.Cells(1,4).Value = "第一行第四列" 设置指定列的宽度(单位:字符个数),以第一列为例: ),以第一列为例 7) 设置指定列的宽度(单位:字符个数),以第一列为例: oExcel.ActiveSheet.Columns(1).ColumnWidth = 5
7
进行页面设置: 14) 进行页面设置: a.页眉 页眉: a.页眉: "报表演示 报表演示" oExcel.ActiveSheet.PageSetup.CenterHeader = "报表演示" b.页脚 页脚: b.页脚: "第&P页 oExcel.ActiveSheet.PageSetup.CenterFooter = "第&P页" c.页眉到顶端边距2cm: c.页眉到顶端边距2cm: 页眉到顶端边距2cm oExcel.ActiveSheet.PageSetup.HeaderMargin = 2/0.035 d.页脚到底端边距3cm: 页脚到底端边距3cm d.页脚到底端边距3cm: oExcel.ActiveSheet.PageSetup.HeaderMargin = 3/0.035 e.顶边距2cm: 顶边距2cm e.顶边距2cm: oExcel.ActiveSheet.PageSetup.TopMargin = 2/0.035 f.底边距2cm: f.底边距2cm: 底边距2cm oExcel.ActiveSheet.PageSetup.BottomMargin = 2/0.035 g.左边距2cm: 左边距2cm g.左边距2cm: oExcel.ActiveSheet.PageSetup.LeftMargin = 2/0.035 h.右边距2cm: 右边距2cm h.右边距2cm: oExcel.ActiveSheet.PageSetup.RightMargin = 2/0.035 i.页面水平居中 页面水平居中: i.页面水平居中: oExcel.ActiveSheet.PageSetup.CenterHorizontally = 2/0.035 j.页面垂直居中 页面垂直居中: j.页面垂直居中: oExcel.ActiveSheet.PageSetup.CenterVertically = 2/0.035 k.打印单元格网线 打印单元格网线: k.打印单元格网线: oExcel.ActiveSheet.PageSetup.PrintGridLines = True
相关文档
最新文档