Как улучшить значения записи openpyxl в ячейках? - PullRequest
1 голос
/ 08 июля 2019

У меня есть файл шаблона .xlsm с макросами и базовой структурой.Мне нужно написать внутри файла некоторый пользовательский объект, который у меня есть в массиве.Поскольку существует много столбцов, которые не используются (или не имеют значения, соответствующего пользовательскому классу), мне нужно писать только конкретные ячейки для каждой строки.

Я разработал базовый цикл, подобныйthis:

wb2 = openpyxl.load_workbook(XLSM_TEMPLATE_PATH, keep_vba=True)
ws2 = wb2['Datas']
row_num = 4

i = 0
for user in users:
    current_row = row_num + i
    ws2.cell(row=current_row, column=21).value = user.last_name
    ws2.cell(row=current_row, column=22).value = user.first_name
    ws2.cell(row=current_row, column=25).value = user.tax_code
    ws2.cell(row=current_row,
             column=30).value = user.residence_address.street_address + ', ' + user.residence_address.street_number
    ws2.cell(row=current_row, column=31).value = user.residence_address.city_name
    ws2.cell(row=current_row, column=34).value = user.email
    ws2.cell(row=current_row, column=38).value = user.date_of_birth
    ws2.cell(row=current_row, column=39).value = user.place_of_birth

    i += 1

exported_file_path = EXPORT_PATH.format(generate_random_code('.xlsm'))
wb2.save(exported_file_path)
wb2.close()

Проблема в том, что цикл для 3-4 пользователей занимает около 15 секунд времени обработки, поэтому лямбда-функция Amazon (в которой размещается скрипт) отключается и завершается сбоем ... и также увеличиваетсярабочее время не имеет большого значения, так как слишком сильно увеличит стоимость.

Есть ли какое-либо решение для ускорения процесса?

...