Мне нужно выбрать фиксированный диапазон («H4»: «AI4») из списка листов в рабочей книге, и мне нужно вставить этот диапазон в другую рабочую книгу с такими же именами листов, как и в первом wb. Теперь вот где это становится сложно (для меня - я новичок в этом): я должен вставить диапазон в том же месте ("Hx": "AIx"), где x - номер строки, который соответствует следующим критериям : ячейка в столбце "F" этой строки должна быть вчерашней датой И ячейка в столбце "U" этой строки не должна быть "0" или незаполненной. Если ячейка в столбце «U» равна «0», я должен перебирать строки (в обратном порядке, то есть искать в строке выше той, в которой «Ux» равен «0»), пока не найду одну это не 0 и вставьте данные туда. Я использую openpyxl для этого. До сих пор я пробовал много вещей, ни одна из которых не работала, и в настоящее время я застрял на этом этапе, где я получаю ошибку - AttributeError: у объекта 'tuple' нет атрибута 'значение':
def copy_daily_range(file1, file2):
"""copies range h4:ai4 from file1 to file2"""
# define sheets for both file1 and file2
sheet_list = ["a", "b", "c"]
y_day = dt.date.today() + dt.timedelta(days=-1)
yesterday = dt.datetime.strptime(str(y_day), '%Y-%m-%d').strftime('%Y-%m-%d') # this sets yesterday's date in the d-MMM-yy format
# open file1 and get cell range from sheet
file_1 = xl.load_workbook(file1)
# open file2
file_2 = xl.load_workbook(file2)
# copy range from file1 to file2
for sheet in sheet_list:
file1_sheet = file_1[sheet]
cell_range = file1_sheet["H4": "AI4"]
file2_sheet = file_2[sheet]
# find max row
mr = file2_sheet.max_row
for num in range(4, mr):
f_col = file2_sheet[f"F{num}"]
split_cell = str(f_col.value)
good_date, bd = split_cell.split(" ")
if good_date == yesterday:
file2_cell_range = file2_sheet[f"H{num}":f"AI{num}"]
file2_cell_range.value = cell_range.value # AttributeError: 'tuple' object has no attribute 'value'
file_2.save(file2)
Any suggestions?