Как выполнить итерацию по листу и раскрасить ячейки, соответствующие заданному условию c? Использование Python и openpyxl - PullRequest
0 голосов
/ 03 августа 2020

Я хочу перебрать лист и заполнить ячейки, если ячейка не «пуста» / пуста если ячейка пуста, никаких действий не требуется если ячейка! пуста, то закрасьте (заполните) ее в

сообщение об ошибке

sheet[i].fill = PatternFill(fill_type='solid', start_color='43e33b', end_color='43e33b')
AttributeError: 'tuple' object has no attribute 'fill'

Код, который я использую,

import openpyxl as xl

from openpyxl.styles import Font, Fill, Color, colors, PatternFill

# creating a variable to take any filename input from user
filename = input('Enter filename here: ')

# loading workbook on local computer c drive using filename
wb = xl.load_workbook(f'c:\\Users\\Charlie\\Desktop\\{filename}.xlsx')

# working with sheet1 on wb 'workbook'
sheet = wb['Sheet1']


# defining pacing list function
def packing_list():
    # deleting columns so that columns required are left for new file
    sheet.delete_cols(1, 14)
    max_rows = sheet.max_row
    print(max_rows)
    for i in range(1, max_rows):
        if sheet.cell(column=7, row=i, value=""):
            sheet[i].fill = PatternFill(fill_type='solid', 
            start_color='43e33b', end_color='43e33b')
        else:
            break
    # saving new worksheet to desktop with name packing_list
    wb.save('c:\\Users\\Charlie\\Desktop\\packing_list.xlsx')

1 Ответ

0 голосов
/ 04 августа 2020

sheet[i] - это кортеж, содержащий все ячейки в i -й строке, где i> = 1

sheet[i][j] - i,j -я ячейка, где j> = 0. Итак 7-й столбец будет sheet[i][6].

Вы можете получить то же самое, используя sheet.cell(column=7, row=i), где и строка, и столбец начинаются с 1.

Вы должны иметь возможность установить sheet.cell(column=7, row=i).fill без проблем

...