如何使用Python的openpyxl修改/添加相同项目的数值
问题
现有未修改状态的表格数据,需要实现相同水果项目的数值汇总的效果。当前尝试的代码存在语法错误且逻辑不符合需求,请问如何用Python的openpyxl完成该操作?
当前错误代码:
for row in range(2, 6): result_cell = 'A{}'.format(row) column_a = ws(row("Quantity") + int(row)].value column_b = ws[row["Fruit"] +str(row)].value ws[result_cell] = column_a + column_b
解决方案
核心思路
要实现相同项目的数值汇总,需先遍历表格数据,用字典统计每个水果的数量总和,再将汇总结果写入表格。
修正后的完整代码
from openpyxl import load_workbook # 加载目标Excel文件(替换为你的文件路径) wb = load_workbook("your_data.xlsx") # 选中要操作的工作表 ws = wb.active # 初始化字典,存储每个水果的累计数量 fruit_quantity_sum = {} # 遍历数据行(假设表头在第1行,数据范围是第2到第5行) for row_num in range(2, 6): # 获取当前行的水果名称和对应数量(根据实际列位置调整,示例中Fruit在B列,Quantity在C列) fruit = ws[f"B{row_num}"].value quantity = ws[f"C{row_num}"].value # 累计相同水果的数量 if fruit in fruit_quantity_sum: fruit_quantity_sum[fruit] += quantity else: fruit_quantity_sum[fruit] = quantity # 将汇总结果写入表格(示例:从A2单元格开始写入) current_row = 2 for fruit, total in fruit_quantity_sum.items(): # 按预期格式写入,也可拆分到不同列 ws[f"A{current_row}"] = f"{fruit}: {total}" current_row += 1 # 保存修改后的文件 wb.save("updated_data.xlsx")
关键说明
- 语法修正:openpyxl中访问单元格需用
ws[单元格地址]或ws.cell(row=行号, column=列号)的格式,原代码索引方式不符合规范 - 逻辑调整:通过字典实现相同项目的数值累加,而非简单的行内单元格相加
- 灵活适配:代码中的列位置、数据行范围可根据你的实际表格结构调整
内容的提问来源于stack exchange,提问作者Monikbudhv113
相关产品推荐
相关产品推荐

