颂风侯 发表于 2024-9-20 09:25:10

对excel的sheet里的单元格做归并求和操作

使用openpyxl对excel的sheet“workbook_new["焊接材料定额表"]”里的单元格做归并求和操作,需求如下:
原始数据如下图
         第2列      第3列   第4列   第5列
第一行 ER308        φ2.5             3.800         490.22
第二行 R305        φ2.2             0.008         1.01
第三行 R305        φ2.2          0.017         2.13
第四行 ER305        φ2.5          0.701         90.48
第五行 ER305        φ2.5             0.468         60.32

需要隔开一行,在第七行对以上数据的第二列三列相同的进行归并,对第四列第五列进行求和操作(第二列三列相同),效果如下
         第2列      第3列   第4列   第5列
第一行 ER308        φ2.5             3.800         490.22
第二行 R305        φ2.2             0.008         1.01
第三行 R305        φ2.2          0.017         2.13
第四行 ER305        φ2.5          0.701         90.48
第五行 ER305        φ2.5             0.468         60.32

第七行 ER308        φ2.5             3.800         641
第八行 R305        φ2.2             0.008         3.41




FishC 发表于 2024-9-20 09:25:18

要使用 `openpyxl` 对 Excel 文件中指定的单元格进行归并求和操作,可以按以下步骤进行。以下是代码示例:

1. 读入 Excel 文件并获取相关数据。
2. 遍历数据,按需求进行归并和求和。
3. 将结果写回到 Excel 文件中。

import openpyxl

# 打开现有的工作簿
workbook = openpyxl.load_workbook('workbook_new.xlsx')
sheet = workbook.active

# 建立一个字典来归并并求和数据
data_dict = {}

for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, min_col=2, max_col=5):
    key = (row.value, row.value)
    if key in data_dict:
      data_dict += row.value
      data_dict += row.value
    else:
      data_dict = .value, row.value]

# 将结果写入第七行之后
new_row_start = 7
for i, ((col2, col3), (sum_col4, sum_col5)) in enumerate(data_dict.items(), start=new_row_start):
    sheet.cell(row=i, column=2, value=col2)
    sheet.cell(row=i, column=3, value=col3)
    sheet.cell(row=i, column=4, value=sum_col4)
    sheet.cell(row=i, column=5, value=sum_col5)

# 保存工作簿
workbook.save('workbook_new.xlsx')

该代码对数据进行了如下操作:
- 通过遍历行来读取原始数据。
- 使用字典 (`data_dict`) 按第2列和第3列相同的关键字进行分组和求和。
- 将这些结果写入新的行,从第7行开始。

运行这个脚本后,您的 Excel 文件将会被更新,并按照需求进行归并求和操作。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 对excel的sheet里的单元格做归并求和操作