You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Datacompy库如何将比对报告字符串保存为Excel文件

Datacompy比对结果导出.xlsx实现方案

Datacompy没有内置直接导出Excel的方法,你可以将比对生成的各类结构化结果整理后,通过pandas的ExcelWriter写入.xlsx文件,按不同sheet分类存储可读性更好。

前置依赖

先安装Excel写入所需的依赖包:
pip install openpyxl pandas datacompy

完整实现步骤

  • 先按常规流程完成两个DataFrame的Datacompy比对
  • 初始化Excel写对象,将不同维度的比对结果分别写入对应工作表
  • 写完后自动释放文件句柄,生成最终的xlsx文件
import pandas as pd
import datacompy

# 替换为你自己的待比对数据源
df_left = pd.read_excel("待比对表1.xlsx")
df_right = pd.read_excel("待比对表2.xlsx")

# 初始化比对对象,join_columns替换为两个表关联用的主键列,支持多主键
compare = datacompy.Compare(
    df_left,
    df_right,
    join_columns=["主键ID"],
    df1_name="源表1",
    df2_name="源表2"
)

# 写入多sheet的Excel结果文件
with pd.ExcelWriter("Datacompy数据比对结果.xlsx", engine="openpyxl") as writer:
    # 写入核心比对汇总指标
    summary_data = [
        ["源表1总行数", compare.df1_shape[0]],
        ["源表2总行数", compare.df2_shape[0]],
        ["两表关联匹配行数", compare.intersect_rows],
        ["仅源表1存在的行数", compare.df1_unq_rows.shape[0]],
        ["仅源表2存在的行数", compare.df2_unq_rows.shape[0]],
        ["存在值差异的列数", len([col for col in compare.column_stats if not col["all_match"]])]
    ]
    pd.DataFrame(summary_data, columns=["统计项", "数值"]).to_excel(writer, sheet_name="比对汇总", index=False)

    # 写入单表独有行
    compare.df1_unq_rows.to_excel(writer, sheet_name="仅源表1存在的行", index=False)
    compare.df2_unq_rows.to_excel(writer, sheet_name="仅源表2存在的行", index=False)

    # 写入列维度比对详情(含列类型、列匹配率、是否全量匹配等信息)
    pd.DataFrame(compare.column_stats).to_excel(writer, sheet_name="列级比对详情", index=False)

    # 写入匹配行的全量比对结果(含每个字段的两边值、是否匹配标记)
    compare.all_mismatch().to_excel(writer, sheet_name="匹配行值差异明细", index=False)

    # 可选:写入Datacompy原生的文本版报告
    report_text = compare.report()
    pd.DataFrame({"文本报告行内容": report_text.split("\n")}).to_excel(writer, sheet_name="原生文本报告", index=False)

注意事项

  • 如果待比对数据量超过100万行,建议导出差显明细时增加过滤条件,避免生成的Excel文件过大无法打开
  • 如果写入时遇到权限报错,先检查目标xlsx文件是否被其他程序(比如WPS、Excel)占用,关闭后再执行
  • 多主键关联时,join_columns参数传入包含所有主键列名的列表即可,比如join_columns=["订单ID", "统计日期"]

内容的提问来源于stack exchange,提问作者Shivraj Navade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 21:01:02