python Openpyxl遍历excel表A列的值,如果出现258和288的编号,将其对应的E列的值求和,并写入表2的D4单元格。表1和表2在同一个excel的不同sheet
时间: 2024-03-22 11:38:27 浏览: 146
可以使用openpyxl库来遍历Excel表格A列的值,并且在遍历过程中对指定的行进行求和,最后将结果写入到另一个工作表的指定单元格。以下是示例代码:
```python
import openpyxl
# 打开Excel文件
workbook = openpyxl.load_workbook('example.xlsx')
# 选择表1和表2
worksheet1 = workbook['Sheet1']
worksheet2 = workbook['Sheet2']
# 定义求和变量
sum = 0
# 遍历A列的值
for cell in worksheet1['A']:
if cell.value == 258 or cell.value == 288:
# 如果编号为258或288,将其对应的E列的值累加到求和变量中
sum += worksheet1.cell(row=cell.row, column=5).value
# 将求和结果写入表2的D4单元格
worksheet2['D4'] = sum
# 保存Excel文件
workbook.save('example.xlsx')
```
在上面的代码中,我们首先打开了Excel文件,然后选择了表1和表2。接下来,我们遍历了表1的A列的所有单元格,如果单元格的值为258或288,则将其对应的E列的值累加到求和变量中。最后,我们将求和结果写入到表2的D4单元格,并保存Excel文件。
相关问题
如果表1A列有100个编号,我现在需要将编号是114和115所对应的B列的数据并求和到表2的D2单元格,将表1A列编号为256和228所对应的B列数据并求和到表2的E2单元格,我该如何写代码。这两个表在同一个excel 的不同sheet中,且表1的A列数据类型是数字,是否需要转换为文本
你可以使用Python的openpyxl库来读取和操作Excel文件。首先需要安装openpyxl库,可以使用以下命令进行安装:
```python
pip install openpyxl
```
然后可以使用以下代码来实现你的需求:
```python
import openpyxl
# 打开Excel文件
workbook = openpyxl.load_workbook('example.xlsx')
# 选择表1和表2
sheet1 = workbook['表1']
sheet2 = workbook['表2']
# 将表1的A列数据类型转换为文本
for cell in sheet1['A']:
cell.number_format = '@'
# 定义需要求和的编号和对应的列
sum_dict = {'114': 'B', '115': 'B', '256': 'B', '228': 'B'}
# 遍历sum_dict,将对应的数据求和并写入表2的对应单元格
for key, value in sum_dict.items():
# 计算对应列的数据总和
total = sum([cell.value for cell in sheet1[value] if sheet1['A' + str(cell.row)].value == int(key)])
# 写入表2的对应单元格
if key in ['114', '115']:
sheet2['D2'] = total
elif key in ['256', '228']:
sheet2['E2'] = total
# 保存Excel文件
workbook.save('example.xlsx')
```
以上代码首先打开Excel文件,并选择需要操作的表1和表2。然后将表1的A列数据类型转换为文本,以便后续进行数字匹配。接着定义需要求和的编号和对应的列的字典,遍历字典,计算对应列的数据总和,并将结果写入表2的对应单元格。最后保存Excel文件。
python读取 excel 表格所有的sheet,如果列名不是A.B.C,则将剩余的列求和他的行数,将结果保存到新列 ‘盖码合并’ 中,如果列名不是D.E.F.则将剩余的列求和他的行数,将结果保存到新列 ‘箱码合并’ 中。
可以使用pandas库读取excel表格,并使用条件判断语句对列名进行筛选,然后使用sum()函数对列进行求和,并利用apply函数将求和结果保存到新列中。示例代码如下:
```python
import pandas as pd
# 读取excel表格
df = pd.read_excel('example.xlsx', sheet_name=None)
# 遍历每个sheet
for sheet_name, sheet_data in df.items():
# 判断列名并求和
if 'A' not in sheet_data.columns and 'B' not in sheet_data.columns and 'C' not in sheet_data.columns:
sum1 = sheet_data[sheet_data.columns.difference(['D', 'E', 'F'])].sum(axis=1)
sheet_data['盖码合并'] = sum1
if 'D' not in sheet_data.columns and 'E' not in sheet_data.columns and 'F' not in sheet_data.columns:
sum2 = sheet_data[sheet_data.columns.difference(['A', 'B', 'C'])].sum(axis=1)
sheet_data['箱码合并'] = sum2
# 保存修改后的excel表格
with pd.ExcelWriter('result.xlsx') as writer:
for sheet_name, sheet_data in df.items():
sheet_data.to_excel(writer, sheet_name=sheet_name, index=False)
```
当然,也可以使用xlrd和xlwt等库读取和写入excel表格。
阅读全文