热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python教程分享基于Python实现对比Exce的工具

目的:设计一个应用gui用于对比两个excel文件思路1.参数同一个excel文件两个sheet页其中一个ods(老数据),一个dwh(新数据)生成对比文件设计两个主键输入主键1输

目的:设计一个应用gui用于对比两个excel文件

思路

1.参数

  • 同一个excel文件两个sheet页其中一个ods(老数据),一个dwh(新数据)
  • 生成对比文件
  • 设计两个主键 输入主键1 输入主键2

(默认新旧文件列名一致)

2.效果

  • 生成的文件
  • 数据量一样、取每个字段不一致的数据前10
  • 数据量不一样、取两边不一样的数据前10、排除不一样的数据、每个字段不一致的数据前10

3.实现

  • 循环对比组合列(主键+对比列)
  • pandas处理差异数据、openpyxl 处理生成的sheet的数据格式. (先生成数据,然后调整格式)

配置

import pandas as pd  from openpyxl import load_workbook  #选择文件路径  path=r"c:users小管同学desktopmigration_data_compari对比文件.xls" #input("选择文件路径:")  targetpath=r"c:users小管同学desktopmigration_data_comparison_tool目标文件对比结果.xlsx"  data_ods=pd.read_excel(r"c:users小管同学desktopmigration_data_comparison_tool对比文件.xls",sheet_name="ods")  data_dwh=pd.read_excel(r"c:users小管同学desktopmigration_data_comparison_tool对比文件.xls",sheet_name="dwh")  #选择主键  primarykey="员工编号"#input("选择主键1:")  primarykey  # 员工编号  

一、数据量

输出表格1–数据量

def write_to_excel_datavolume(data,targetpath): # cor_df 为要保存的 dataframe       writer = pd.excelwriter(targetpath, engine='xlsxwriter') # 这里用      data.to_excel(writer,sheet_name='sheet1', encoding='utf8', header=false, startcol=0, startrow=2) # 把dataframe的数据从第2行开始      workbook  = writer.book            format1 = workbook.add_format({ # 先把样式打包,然后之后赋值即可          'bold': true, # 字体加粗          'text_wrap': true, # 是否自动换行          'valign': 'bottom',  #垂直对齐方式          'align': 'center', # 水平对齐方式          'fg_color': '#c5d9f1', # 单元格背景颜色          'border': 1,# 边框      })          writer_sheet = writer.sheets['sheet1']      # 设置宽度      writer_sheet.set_column("a:i", 16)      writer_sheet.set_column('c:c',30)      writer_sheet.merge_range(0,0,0,2,'对比结果',format1)      writer_sheet.merge_range(4,2,4,0,'数据量差异',format1)      writer_sheet.write(1,0,'',format1)      writer_sheet.write(1,1,'ods',format1)      writer_sheet.write(1,2,'dwh',format1)      writer.save()      writer.close()  dataframe_datavolume=pd.dataframe([[data_ods.shape[0]],[data_dwh.shape[0]]]).t  dataframe_datavolume.columns =["ods","dwh"]  dataframe_datavolume.index=["数据量"]  dataframe_datavolume  #writefiledatavolume(dataframe_datavolume,targetpath)  write_to_excel_datavolume(dataframe_datavolume,targetpath)  

基于Python实现对比Exce的工具

输出表格2–数据量差异合同

if data_ods.shape[0]==data_dwh.shape[0]:      pass  else:            data_ods_primarykey=pd.dataframe(data_ods[primarykey])      data_dwh_primarykey=pd.dataframe(data_dwh[primarykey])      df_union = pd.concat([data_ods_primarykey,data_dwh_primarykey])      # 实现1      df_diff_ods = df_union.append(data_ods_primarykey).drop_duplicates(subset=df_union.columns.to_list(), keep=false)      df_diff_dwh = df_union.append(data_dwh_primarykey).drop_duplicates(subset=df_union.columns.to_list(), keep=false)      #dwh多的合同      df_diff_ods      #dwh少的合同      df_diff_dwh      df_diff_dwh_data=[]      df_diff_ods_data=[]      for i in df_diff_ods.head(10).values.tolist():          for n in i:              df_diff_ods_data.append(n)                    for i in df_diff_dwh.head(10).values.tolist():              df_diff_dwh_data.append(n)      while true:          if len(df_diff_dwh_data)>len(df_diff_ods_data):              df_diff_ods_data.append("-")          elif len(df_diff_dwh_data)

基于Python实现对比Exce的工具

到此这篇关于基于python实现对比excel的小工具 【实现中】的文章就介绍到这了,更多相关python对比excel的小工具内容请搜索<编程笔记>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<编程笔记>!

需要了解更多python教程分享基于Python实现对比Exce的工具,都可以关注python教程分享栏目&#8212;编程笔记


推荐阅读
author-avatar
男儿有志不言苦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有