Скопируйте указанный c диапазон ячеек из одного wb в другой на основе определенных c критериев - Python - PullRequest
1 голос
/ 13 марта 2020

Мне нужно выбрать фиксированный диапазон («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?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...