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

Python for循环向已有Excel工作表追加数据框与文本的方法

实现Python读取Excel多表计算后追加汇总结果

需求说明

编写Python代码实现以下逻辑:

  • 读取Excel文件内多个工作表的数据
  • 完成指定列求和计算
  • 将汇总结果追加到对应数据来源工作表的原有数据底部
  • 格式要求:原有数据下方空2行开始写入汇总内容

示例参考

原始工作表数据

ID  APP
1   20
2   50
3   79
4   34
5   7
6   5
7   3
8   78

期望输出格式

ID  APP
1   20
2   50
3   79
4   34
5   7
6   5
7   3
8   78

Sumary:
Total=276

原有代码问题

之前的代码运行无响应是因为存在以下硬错误:

  • 无效导入:from excel import append_df_to_excel 不存在对应模块和方法,属于无效引用
  • 语法错误:分组计算写法错误,df.groupby['App'].sum 存在调用符号错误(groupby是方法需要用括号调用)、列名拼写错误(实际列名是大写APP)、方法未加括号执行的问题,且本需求求整列总和不需要groupby操作
  • 写入逻辑错误:使用xlsxwriter引擎创建写入对象会直接覆盖整个原Excel文件,无法实现追加效果;循环工作表时硬编码写入Sheet1,和遍历的工作表名不匹配
  • 变量错误:writer.sheets[data'] 缺少前引号,且data变量未定义
  • 异常捕获错误:裸except Exception: continue会直接吞掉所有运行报错,看不到任何错误提示,也是运行后无任何反馈的核心原因
  • 位置计算缺失:没有计算原有数据的行高,无法准确定位空2行后的写入位置

可运行实现方案

前置依赖安装

先安装需要的第三方库:

pip install pandas openpyxl

完整代码

import pandas as pd
from openpyxl import load_workbook

path = 'data.xlsx'
# 读取所有工作表信息
excel_reader = pd.ExcelFile(path, engine='openpyxl')
# 加载现有工作簿,保留原有所有数据和格式
wb = load_workbook(path)

for sheet_name in excel_reader.sheet_names:
    # 读取当前工作表数据
    df = pd.read_excel(excel_reader, sheet_name=sheet_name)
    # 计算APP列总和
    total_val = df['APP'].sum()
    # 获取当前工作表操作对象
    ws = wb[sheet_name]
    # 计算写入起始行:表头1行+数据行数,空2行后开始写汇总
    write_start_row = 1 + len(df) + 3
    # 写入汇总内容
    ws.cell(row=write_start_row, column=1, value='Sumary:')
    ws.cell(row=write_start_row + 1, column=1, value=f'Total={int(total_val)}')

# 保存修改
wb.save(path)
wb.close()

代码说明

  • 采用openpyxl引擎加载现有Excel文件,写入时不会覆盖原有工作表和数据
  • 自动适配每个工作表的数据行数,严格按照要求空2行后写入汇总,不会出现内容错位
  • 求和逻辑和示例结果完全匹配,示例数据计算结果为276
  • 移除了吞异常的错误捕获逻辑,运行时如果出现文件被占用、列名不匹配等问题会直接抛出错误,方便排查
  • 自动遍历所有工作表,汇总结果会写入对应来源的工作表,不需要硬编码工作表名

内容的提问来源于stack exchange,提问作者Rob John

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:57:12