在不删除标题的情况下用公式填充列

时间:2018-10-02 01:34:41

标签: python excel openpyxl

我在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 :(得分:1)

  

问题:我想从第二行而不是第一行开始复制公式

Sheet['T']返回tuple个对象中的Cell个。

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

要从第二行开始,跳过第一个Cell对象,请更改为:

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

注意:一个tuple是基于 0的,一个openpyxl.Worksheet是基于 1的

因此,您必须从索引1到末尾进行切片:[1:],并要使Row从第2行开始,请执行enumerate(..., 2)