如何提高单元格中的openpyxl写入值?
How to improve openpyxl writing values in cells?
我有一个包含宏和基本结构的模板 .xlsm 文件。我需要在文件中写入数组中的一些用户对象。由于有很多列没有被使用(或者在用户中没有对应的值class),我只需要为每一行写特定的单元格。
我想出了一个像这样的基本循环:
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 lambda 函数(托管脚本)超时并失败...而且增加工作时间也不是一个大问题,因为会增加太多成本。
有什么办法可以加快这个过程吗?
经过不同的研究,唯一可以提高性能的方法就是用一个更优化的库来改变库。我用 Pandas 获得了更好的结果。它仍然不是 "fast",但我的计算时间约为 -20%。
我有一个包含宏和基本结构的模板 .xlsm 文件。我需要在文件中写入数组中的一些用户对象。由于有很多列没有被使用(或者在用户中没有对应的值class),我只需要为每一行写特定的单元格。
我想出了一个像这样的基本循环:
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 lambda 函数(托管脚本)超时并失败...而且增加工作时间也不是一个大问题,因为会增加太多成本。
有什么办法可以加快这个过程吗?
经过不同的研究,唯一可以提高性能的方法就是用一个更优化的库来改变库。我用 Pandas 获得了更好的结果。它仍然不是 "fast",但我的计算时间约为 -20%。