python比较两个excel表格的差异

简介:

一个同事有两个excel表格要比较差异, 找了一下有相关软件,如: beyond compare, excel compare

但这两个似乎都是直接排序再比较的.


然后没办法,就用python折腾了一个脚本. 这个脚本先读入要比较的文件中的表. 读的时候 ,如果没有空行就把它和它前面的加一起,直到有空行. 这样比较的话, 不能得到具体那一行有差异, 只有一个大概的位置. 如果表格中间空行越少,越精确. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/python
#-*- coding:utf-8 -*-
 
import  xlrd, os, sys
 
if  len (sys.argv) ! =  3 :
   print  "\n        ./script diff_1.xlsx diff_2.xlsx \n"
   sys.exit()
 
diff  =  {}
xls1  =  sys.argv[ 1 ]
xls2  =  sys.argv[ 2 ]
 
if  os.path.isfile(xls1)  and  os.path.isfile(xls2):
   pass
else :
   print  "\n        ./script diff_1.xlsx diff_2.xlsx \n"
   sys.exit()
 
def  getcontent(table):   #获取xlsx表内容
   tmp_data  =  {}
   tmp_table  =  ''
   all_data  =  {}
 
   for  in  xrange (table.nrows):
     tmp  =  table.row_values(j)
     if  list ( set (tmp))  = =  ['']:
       tmp_data[tmp_table]  =  ''
       if  tmp_table ! =  '':
         all_data[j]  =  tmp_table
       tmp_table  =  ''
     else :
       tmp2  =  ""
       for  in  tmp:
         try :
           tmp2  =  tmp2  +  +  ","
         except :
           tmp2  =  tmp2  +  str (i) +  ","
       tmp_table  =  tmp_table  +  tmp2  +  "\n"   #把多行的内容放一起
   return  (tmp_data, all_data)
 
def  write_file(excel_diff, filename):
   =  open (filename,  'w' )
   f.write(excel_diff)
   f.close()
 
def  diff_content(table1,table2):  #检查两个表差异
   diff_tmp  =  []
   for  in  table1:
     if  in  table2:
       pass
     else :
       diff_tmp.append(i)
   return  list ( set (diff_tmp))
  
def  get_rows(diff, all_data):  #获取差异位置
   tmp  =  []
   for  in  diff:
     for  in  all_data:
       if  all_data[j].strip()  = =  i.strip():
         tmp.append(j)
         break
   return  tmp
        
 
for  in  range ( 0 , 2 ):   # 比较几个表
   data1  =  xlrd.open_workbook(xls1)
   table1  =  data1.sheets()[i]
   data2  =  xlrd.open_workbook(xls2)
   table2  =  data2.sheets()[i]
   
   tmp1, all1  =  getcontent(table1)
   tmp2, all2  =  getcontent(table2)
 
   result  =  diff_content(tmp1, tmp2)  #1 中有 2 没有的具体内容
#  result2= diff_content(tmp2, tmp1)  #2 中有 1 没有的具体内容
 
   diff[i]  =  get_rows(result,all1)
   print  sorted (diff[i])
 
#  write_file(sorted(diff[i]), "/tmp/diff.txt")
 
#  diff[i] = get_rows(result2,all2)
#  print sorted(diff[i])



本文转自 nonono11 51CTO博客,原文链接:http://blog.51cto.com/abian/1603947,如需转载请自行联系原作者
相关文章
|
1月前
|
人工智能 Java Linux
Python高效实现Excel转PDF:无Office依赖的轻量化方案
本文介绍无Office依赖的Python方案,利用Spire.XLS、python-office、Aspose.Cells等库实现Excel与PDF高效互转。支持跨平台部署、批量处理、格式精准控制,适用于服务器环境及自动化办公场景,提升转换效率与系统稳定性。
218 7
|
27天前
|
机器学习/深度学习 监控 数据挖掘
Python 高效清理 Excel 空白行列:从原理到实战
本文介绍如何使用Python的openpyxl库自动清理Excel中的空白行列。通过代码实现高效识别并删除无数据的行与列,解决文件臃肿、读取错误等问题,提升数据处理效率与准确性,适用于各类批量Excel清理任务。
284 0
|
3月前
|
移动开发 JavaScript
(H5查看CAD)网页CAD提取图纸表格到excel
本文介绍如何通过自定义MxCAD插件,在Web端智能识别CAD图纸中的表格,实现自动合并与高效导出至Excel,提升数据提取效率与准确性。内容涵盖区域选择、图形识别、表格结构重建、单元格合并及内容导出等关键技术,适用于工程图纸数据自动化处理场景。
|
8月前
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
211 4
|
4月前
|
开发工具 Python
使用Python和OpenAPI将云上的安全组规则填写入Excel
本文介绍如何通过Python脚本自动化获取阿里云安全组及其规则信息,并将结果导出为Excel表格。相比CLI命令行方式,Python实现更高效、便捷,适用于需要批量处理和交付的场景。
使用Python和OpenAPI将云上的安全组规则填写入Excel
|
6月前
|
网络协议 API 开发者
分析http.client与requests在Python中的性能差异并优化。
合理地选择 `http.client`和 `requests`库以及在此基础上优化代码,可以帮助你的Python网络编程更加顺利,无论是在性能还是在易用性上。我们通常推荐使用 `requests`库,因为它的易用性。对于需要大量详细控制的任务,或者对性能有严格要求的情况,可以考虑使用 `http.client`库。同时,不断优化并管理员连接、设定合理超时和重试都是提高网络访问效率和稳定性的好方式。
151 19
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
Python数据分析,别再死磕Excel了!
Python数据分析,别再死磕Excel了!
259 2
|
6月前
|
存储 机器学习/深度学习 人工智能
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
本文探讨了多模态RAG系统的最优实现方案,通过模态特定处理与后期融合技术,在性能、准确性和复杂度间达成平衡。系统包含文档分割、内容提取、HTML转换、语义分块及向量化存储五大模块,有效保留结构和关系信息。相比传统方法,该方案显著提升了复杂查询的检索精度(+23%),并支持灵活升级。文章还介绍了查询处理机制与优势对比,为构建高效多模态RAG系统提供了实践指导。
1686 0
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
|
8月前
|
JavaScript 前端开发 数据可视化
20.6K star!Excel级交互体验!这款开源Web表格神器绝了!
Handsontable 是一款功能强大的 JavaScript 数据表格组件,提供类 Excel 的交互体验。支持实时协作、数据绑定、公式计算等企业级功能,可轻松集成到 React/Vue/Angular 等主流框架。
1344 11
|
8月前
|
人工智能 数据可视化 前端开发
Probly:开源 AI Excel表格工具,交互式生成数据分析结果与可视化图表
Probly 是一款结合电子表格功能与 Python 数据分析能力的 AI 工具,支持在浏览器中运行 Python 代码,提供交互式电子表格、数据可视化和智能分析建议,适合需要强大数据分析功能又希望操作简便的用户。
980 2

推荐镜像

更多