2017-08-29 176 views
1

我正在尝试将公式写入单元格并写入整列。但是,对于列中的每个单元格,它读取=(E2-F2)/ C2。对于同一列上的每个单元格,我如何获取它以便读取(E3-F3)/ C3等?Openpyxl公式为整列填充

import openpyxl 

wb = openpyxl.load_workbook('yes.xlsx') 
Sheet = wb.get_sheet_by_name('Sheet1') 

n = '=(E2-F2)/C2' 
for cellObj in list(Sheet.columns)[6]: 
    cellObj.value = n 
wb.save("row_creation_loop.xlsx") 
+0

对我而言,你的目标并没有明确说明。你说它读取一个公式(从你的代码中指定的公式中获得),但你希望它读取一个不同的公式。只是改变你的代码中的硬编码公式不会解决它?你是否想增加公式中列中每一行的值?如果是这样,在一个循环中增加一个行变量并将其转换为字符串将会起作用,但是更明确您的目标是什么将有助于提供解决方案。 – davedwards

+0

对不起,如果我不清楚。我试图在公式中增加同一列中每行的值。 –

+1

感谢澄清。您可能可以在for循环中使用[enumerate](http://docs.python.org/2/library/functions.html#enumerate)来获取行号,然后将该行值赋给'n'。可能类似于:'for row,cellObj in enumerate(list(Sheet.columns)[6]):'...'n ='=(E%dF%d)/ C%d'%(row,row,行)' – davedwards

回答

2

从我的意见,这里是for -loop码全:

# n = '=(E2-F2)/C2' # move this assignment into the for-loop 

for row, cellObj in enumerate(list(Sheet.columns)[6]): 
    print cellObj 
    n = '=(E%d-F%d)/C%d' % (row, row, row) 
    # print n # check that n gets assigned correct string value 
    cellObj.value = n 

希望这有助于。