千家信息网

基于Python怎么实现对比Exce的工具

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇"基于Python怎么实现对比Exce的工具"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来
千家信息网最后更新 2026年11月02日基于Python怎么实现对比Exce的工具

这篇"基于Python怎么实现对比Exce的工具"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"基于Python怎么实现对比Exce的工具"文章吧。

1.参数

  • 同一个excel文件两个sheet页其中一个ODS(老数据),一个DWH(新数据)

  • 生成对比文件

  • 设计两个主键 输入主键1 输入主键2

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

2.效果

  • 生成的文件

  • 数据量一样、取每个字段不一致的数据前10

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

3.实现

  • 循环对比组合列(主键+对比列)

  • pandas处理差异数据、openpyxl 处理生成的sheet的数据格式. (先生成数据,然后调整格式)

配置

import pandas as pdfrom openpyxl import load_workbook#选择文件路径path=r"C:\Users\小管同学\Desktop\Migration_Data_Compari\对比文件.xls" #input("选择文件路径:")TargetPath=r"C:\Users\小管同学\Desktop\Migration_Data_Comparison_Tool\目标文件\对比结果.xlsx"DATA_ODS=pd.read_excel(r"C:\Users\小管同学\Desktop\Migration_Data_Comparison_Tool\对比文件.xls",sheet_name="ODS")DATA_DWH=pd.read_excel(r"C:\Users\小管同学\Desktop\Migration_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]]]).TDataFrame_DataVolume.columns =["ODS","DWH"]DataFrame_DataVolume.index=["数据量"]DataFrame_DataVolume#writeFileDataVolume(DataFrame_DataVolume,TargetPath)write_to_excel_DataVolume(DataFrame_DataVolume,TargetPath)

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

if DATA_ODS.shape[0]==DATA_DWH.shape[0]:    passelse:        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)< len(df_diff_ODS_Data):            df_diff_DWH_Data.append("-")        elif len(df_diff_DWH_Data)== len(df_diff_ODS_Data):            break    DataFrame_DataVolume_Count_result=pd.DataFrame(df_diff_DWH_Data,df_diff_ODS_Data).reset_index()    DataFrame_DataVolume_Count_result.columns=['DWH多的合同','DWH少的的合同']    DataFrame_DataVolume_Count_result=DataFrame_DataVolume_Count_result.reset_index()    DataFrame_DataVolume_Count_result.columns=['序号','DWH多的合同','DWH少的的合同']DataFrame_DataVolume_Count_resultfrom openpyxl import load_workbook def write_to_excel_Count_result(Data,TargetPath):    df_Old = pd.DataFrame(pd.read_excel(TargetPath)) #读取原数据文件和表     writer = pd.ExcelWriter(TargetPath,engine='openpyxl')    book=load_workbook(TargetPath)    writer.book = book    writer.sheets = dict((ws.title, ws) for ws in book.worksheets)    df_rows = df_Old.shape[0] #获取原数据的行数    Data.to_excel(writer,startrow=df_rows+1, index=False,startcol=0,header=True)#将数据写入excel中的aa表,从第一个空行开始写    writer.save()#保存write_to_excel_Count_result(DataFrame_DataVolume_Count_result,TargetPath)

以上就是关于"基于Python怎么实现对比Exce的工具"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

数据 文件 合同 内容 同学 生成 选择 工具 一致 差异 两个 员工 字段 文章 方式 格式 知识 篇文章 结果 表格 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州紫鲸互联网科技有限公司 互联网和科技技术 工业互联网科技新基建 青岛互联网科技公司 世界互联网领先科技成果 华中科技大学互联网 唐信互联网科技 大连 互联网科技公司有哪些 居家互联网科技有限公司 科技赋能互联网健康 深圳市运趣互联网科技有限公司 中国互联网有什么科技含量 互联网公司科技股 花神(南京)互联网科技有限公司 阿里互联网科技企业 用友工业互联网科技发展 浙南科技城互联网大厦招聘 陕西云淼互联网科技公司 世界互联网科技成果奖 同城互联网络科技 广西互联网科技公司 深圳市运趣互联网科技有限公司 中国科技互联网公司收入 中化能源互联网科技招聘 智腾互联网科技有限公司 互联网科技人工智能实验室 沐思想互联网科技有限公司 互联网领先科技宣传片 易企秀互联网科技是做什么的 科技和互联网行业的特点
0