不用比较 相同单元格数字相加 文本保留
时间: 2024-02-19 08:03:47 浏览: 76
如果要将两个 sheet 页中相同单元格的数字相加,并保留文本,则可以按照以下步骤进行:
1. 遍历第一个 sheet 页,将每个单元格的值保存到一个字典中,字典的键为单元格的坐标,值为单元格的值。
2. 遍历第二个 sheet 页,对于每个单元格,如果其坐标在第一个 sheet 页的字典中已经存在,则将两个单元格的数字相加,并将结果保存到第一个 sheet 页的字典中;否则,将该单元格的值直接保存到第一个 sheet 页的字典中。
3. 将第一个 sheet 页的字典中的数据写回到 Excel 文件中。
示例代码如下:
```python
from openpyxl import load_workbook
# 打开 Excel 文件
workbook = load_workbook(filename='example.xlsx')
# 读取 Sheet1 的数据
sheet1 = workbook['Sheet1']
sheet1_data = {}
for row in sheet1.iter_rows(min_row=2):
for cell in row:
sheet1_data[cell.coordinate] = cell.value
# 处理 Sheet2 的数据
sheet2 = workbook['Sheet2']
for row in sheet2.iter_rows(min_row=2):
for cell in row:
if cell.coordinate in sheet1_data:
sheet1_value = sheet1_data[cell.coordinate]
if isinstance(sheet1_value, (int, float)) and isinstance(cell.value, (int, float)):
sheet1_data[cell.coordinate] = sheet1_value + cell.value
else:
sheet1_data[cell.coordinate] = sheet1_value + '\n' + cell.value
else:
sheet1_data[cell.coordinate] = cell.value
# 写回到 Excel 文件中
for coordinate, value in sheet1_data.items():
sheet1[coordinate].value = value
# 保存文件
workbook.save('example.xlsx')
```
在上面的示例中,首先使用字典保存了第一个 sheet 页的所有单元格的值,字典的键为单元格的坐标,值为单元格的值。然后,遍历第二个 sheet 页,对于每个单元格,如果其坐标在第一个 sheet 页的字典中已经存在,则将两个单元格的数字相加,并将结果保存到第一个 sheet 页的字典中;否则,将该单元格的值直接保存到第一个 sheet 页的字典中。最后,将第一个 sheet 页的字典中的数据写回到 Excel 文件中,并保存文件。
阅读全文