Сократить количество кода
Доброго времени суток Уважаемые форумчане! Помогите пожалуйста советом. Начал изучение openpyxl и не могу понять как мне сократить количество блоков в коде. У меня есть документ excel, в котором две страницы. Одна из них - это данные, вторая представляет из себя документ, в который в зависимости от даты должны подставляться значения и документ должен идти на печать. Собственно, что у меня получилось
wb = load_workbook(filename='Расчет.xlsx')
ws = wb['sheet1']
ws2 = wb['sheet2']
sheet2 = wb.active
ws2['D8'].value = ws['A7'].value
ws2['W20'].value = ws['B7'].value
ws2['W56'].value = ws['C7'].value
ws2['X44'].value = ws['E7'].value
ws2['X46'].value = ws['D7'].value
ws2['X48'].value = ws['F7'].value
ws2['X52'].value = ws['Q7'].value
target = wb.copy_worksheet(from_worksheet=sheet2)
ws2['D8'].value = ws['A8'].value
ws2['W20'].value = ws['B8'].value
ws2['W56'].value = ws['C8'].value
ws2['X44'].value = ws['E8'].value
ws2['X46'].value = ws['D8'].value
ws2['X48'].value = ws['F8'].value
ws2['X52'].value = ws['Q8'].value
и таких блоков 30!!!
Ответы (1 шт):
Автор решения: day383
→ Ссылка
k1 = ['D8','W20','W56','X44','X46','X48','X52']
k0 = ['A', 'B', 'C', 'E', 'D', 'F', 'Q']
second_ks = []
col = 7
# заполняет second_ks столбцами
# ['A7','B7',...] ['A8','B8',...] ... ['A36','B36',...]
for i in range(30):
k = [a + str(col) for a in k0]
second_ks.append(k)
col += 1
# zip возвращает пары ключей: ('D8','A7') ('W20','B7') ...
for k2 in second_ks:
for i, j in zip(k1, k2):
ws2[i].value = ws[j].value