2017-08-29 420 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 

希望這有助於。