Excel Compare

目录

背景及目的

详细说明

具体实现

Excel文件拆分

BC比较且生成报表

报表汇总


背景及目的

在工作中尝尝因需求变更,不得不梳理变更点,前后对比起来,人工费时且易出错,尤其是excel文档,一个excel文档可能包含多个sheet,无论用什么比较工具,如compare,都显得吃力,效率低下。于是,想利用手上的工具,写个比较excel的脚本,完成繁琐的比较工作。

解决思路

思路1:使用python编写脚本,获取两个excel文档,然后,对其进行分析比较。

       难点:excel 文档中的模板格式如何明确?

  1. 若固定下来,易于后期两者的比较,但这样就成了针对特定模板的excel文档的对比
  2. 不固定,自适应,难度较大,目测工作量大,且难实现

思路2:手动compare 比较

       工作薄里工作表不只一张sheet,而BC对比两个工作薄时,只会以工作薄保存时所停留的工作表为准进行对比。若想对比多个sheet,需要每次必须指定表格,保存关闭后,启用BC进行对比。

但也可以在用BC进行对比时,依次指定两个工作薄里需要比较的表格,按“Ctrl+S”(不必关闭工作薄),然后再回到BC的对比界面,会有如下的提示窗口,重载后,新的表格对比结果就出来了。 

 

思路3:上述两种方式结合。

      通过脚本,结合compare,对excel 进行比较。详情思路见下章节

详细说明

设计思路

关键点:BC只会以工作薄保存时所停留的工作表为准,进行两个工作表的对比

  •  将Excel文件进行拆分,每一个sheet单独成为一个工作薄,将得到2组工作薄
  • 使用BC对这两组工作薄进行一一比较,生成Html报表
  • 最终将生成的多个Html报表,整合成一个总报表

以上工作使用Python实现

具体实现

Excel文件拆分

使用到lib库: xlrd,  xlwt, pands

      获取excel文件: xlrd.open_workbook(Excel_fileName1)

       循环处理sheet 工作薄:

  1. 建立新的工作薄
  2. 读取指定excel中的sheet
  3. sheet写入到新的工作薄

Note: 使用到pands库中的API

  • ExcelWriter
  • read_excel
  • to_excel

code:

 拆分结果:

  BC比较且生成报表

使用到lib库: subprocess直接使用subprocess.Popen调用BC 进行比较,并生成报告

BCompare_Path="F:\\Python_warkplace\\BeyondCompare\\BCompare.exe"

 关键点:脚本的编制

data-report layout:side-by-side &

     options:ignore-unimportant,display-mismatches,line-numbers  &

     output-to:%3 output-options:html-color %1 %2

具体可参考BC 的指导手册(BC安装路径下):.\BeyondCompare\ BCompare.chm

可根据实际情况,设置不同参数,详见手册

报表汇总

 

创建一个总的html, 在指定的目录中找到所有的html 文件,将其分别读出来,然后写入总的html,保存OK

PS:上网找了个代码,合并OK, 以为Html合并需要啥格式的要求,后来细看了,好像没用到,仅仅读出另存为即可。

 

 Exe文件由于BCompare_Path="F:\\Python_warkplace\\BeyondCompare\\BCompare.exe"

是绝对路径,且不能更改。故只能自个用。

PS:有时间,可以再优化,BC选择路径,以及GUI

可根据BC的实际路径做调整BCompare_Path

https://download.csdn.net/download/kkaixiu2009/86725597

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值