使用Python、Openpyxl从特定单元格开始向现有excel文件追加列表

sg3maiej  于 2023-01-18  发布在  Python
关注(0)|答案(1)|浏览(173)

我在my_list中获得列表的数量,并希望在excel中将列表项从cell E3添加到my_list单元格cell (AI8)的长度

print(my_list)
['W', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'W', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'W', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'W', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'W', 'Mon', 'Tue']
['Sun', 'W', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'W', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'W', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'W', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'W', 'Tue']
['Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W']
['Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W']
['Sun', 'Mon', 'Tue', 'W', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'Tue', 'W', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'Tue', 'W', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'Tue', 'W', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'Tue']

我希望像这样添加图像,将mon, tue, wed等其他项替换为None,然后只添加W

我的代码是

for r in range(4, 9):
    for c,val in zip(5, my_list):
        ws.cell(row=r, column=c).value=val
c2e8gylq

c2e8gylq1#

只需按单元格迭代Excel范围,并使用单元格位置查找列表中的值,如果从列表返回的值为“W”,则写入单元格。
调整范围最大/最小行数以适应实际行数。

import openpyxl

my_list = [['W', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'W', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'W', 'Mon',
            'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'W', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'W', 'Mon', 'Tue'],
           ['Sun', 'W', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'W', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'W',
            'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'W', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'W', 'Tue'],
           ['Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon',
            'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W'],
           ['Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon',
            'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'W'],
           ['Sun', 'Mon', 'Tue', 'W', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'Tue', 'W', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon',
            'Tue', 'W', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'Tue', 'W', 'Thu', 'Fri', 'Sat', 'Sun', 'Mon', 'Tue']]

filename = 'foo.xlsx'

wb = openpyxl.load_workbook(filename)
ws = wb['Sheet1']

start_column = 5
for enum, row in enumerate(ws.iter_rows(min_col=start_column, max_col=35, min_row=4, max_row=8)):
    for cell in row:
        listval = my_list[enum][cell.column - start_column]
        if listval == 'W':
            cell.value = listval

wb.save('foo_out.xlsx')

相关问题