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,如需转载请自行联系原作者
相关文章
|
22天前
|
数据处理 索引 Python
用Python实现数据录入、追加、数据校验并生成表格
本示例展示了如何使用Python和Pandas库实现学生期末考试成绩的数据录入、追加和校验,并生成Excel表格。首先通过`pip install pandas openpyxl`安装所需库,然后定义列名、检查并读取现有数据、用户输入数据、数据校验及保存至Excel文件。程序支持成绩范围验证,确保数据准确性。
72 14
|
30天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
2月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
144 5
|
2月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
119 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
2月前
|
SQL 数据可视化 数据挖掘
想让Excel表格设计更美观?试试这几款好用工具!
Excel表格设计在项目管理和数据分析中至关重要。本文推荐四款辅助工具:板栗看板、Excel自动图表助手、Think-Cell Chart 和 Power BI,分别在任务管理、图表生成、数据可视化等方面表现突出,帮助你设计出更专业、美观的表格。
87 2
|
27天前
|
机器学习/深度学习 前端开发 数据处理
利用Python将Excel快速转换成HTML
本文介绍如何使用Python将Excel文件快速转换成HTML格式,以便在网页上展示或进行进一步的数据处理。通过pandas库,你可以轻松读取Excel文件并将其转换为HTML表格,最后保存为HTML文件。文中提供了详细的代码示例和注意事项,帮助你顺利完成这一任务。
39 0
|
3月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
141 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
3月前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
120 6
|
3月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
69 2
|
3月前
|
前端开发 JavaScript API
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
240 0