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

如何用xlwings将len()或去重结果写入指定Excel单元格?

解决xlwings写入DataFrame行数统计到Excel的问题

现有代码的问题

  • tot_dups定义错误:当前tot_dups = len(df.index)导致len(df.index) - tot_dups结果恒为0,无法得到实际重复数量
  • 语法错误:Sheet1['B7'] = (len(df.index) - tot_dups))多了一个右括号
  • 去重后行数未正确计算:RawData_ws['A2']仍写入原行数,未处理去重逻辑

修正后的完整实现代码

import xlwings as xw
import pandas as pd  # 确保导入pandas(操作DataFrame必备)

# 先加载或定义你的目标DataFrame(示例)
# df = pd.read_csv("your_data_source.csv")

# 1. 计算三个核心统计值
original_row_count = len(df.index)
df_deduped = df.drop_duplicates()  # 全局去重,需按指定列去重可加subset参数,如subset=['ID', 'Name']
deduped_row_count = len(df_deduped.index)
tot_dups = original_row_count - deduped_row_count  # 实际重复的行数

# 2. 用xlwings写入Excel指定单元格
app = xw.App(visible=False)
wb = xw.Book(FilePath)
RawData_ws = wb.sheets['Raw Data']
Sheet1 = wb.sheets['Sheet 1']

# 写入对应值
RawData_ws['A1'] = original_row_count  # 原数据总行数
RawData_ws['A2'] = deduped_row_count   # 去重后的行数
Sheet1['B7'] = original_row_count - tot_dups  # 等价于deduped_row_count,直接写后者更直观

# 保存并关闭资源,避免后台残留Excel进程
wb.save()
wb.close()
app.quit()

关键说明

  • 若需按特定列判断重复,修改drop_duplicates()参数即可,比如df.drop_duplicates(subset=['订单号'], keep='first')
  • 必须执行wb.save()、wb.close()和app.quit(),防止后台Excel进程占用系统资源
  • Sheet1['B7']的计算式本质和deduped_row_count完全一致,直接写入后者代码可读性更强

内容的提问来源于stack exchange,提问作者Jose Daniel Rojas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:05:23