Заполнение столбцов формулами без стирания заголовков - PullRequest
0 голосов
/ 02 октября 2018

У меня есть данные с заголовками в файле xlsx, я использую openpyxl для заполнения столбцов в электронной таблице и до сих пор хорошо, за исключением того, что заголовки столбцов заменяются формулами, когда я запускаю свой код, которыйвот этот:

import openpyxl
#Opening a Workbook
wb = openpyxl.load_workbook('file.xlsx')
#Working with an specific sheet.
Sheet = wb.get_sheet_by_name('Data')
#Getting the max amount of rows in a given sheet.
row_count = Sheet.max_row


#GEO_CODE home_county
for i, cellObj in enumerate(Sheet['T'], 1):
    cellObj.value = '=A{0}'.format(i)

#Total_Count
for i, cellObj in enumerate(Sheet['U'], 1):
    cellObj.value = '=SUMIF($A$2:$A${1}, T{0},$D$2:$D${1})'.format(i, row_count)

wb.save('file.xlsx')

Какие изменения я должен внести в свой код, если я хочу начать копировать формулы во второй строке, а не в первой?

Спасибо за ваше время!

1 Ответ

0 голосов
/ 02 октября 2018

Вопрос : я хочу начать копировать формулы во второй строке, а не в первой

Sheet['T'] возвращает tuple из Cell объекты.

>>> (<Cell Data.T1>, <Cell Data.T2>, <Cell Data.T3>,...)

Чтобы начать со второй строки, пропустив первый Cell объект, измените на:

for i, cellObj in enumerate(Sheet['T'][1:], 2):

Примечание : A tuple is 0-based , a openpyxl.Worksheet is 1-based !

Следовательно, вам нужно срезать от индекса 1 до конца, выполнив: [1:] и чтобы получить строку, начиная со строки 2, выполните enumerate(..., 2).

...