问题描述
前一段时间,我在使用xlsxwriter将公式放入电子表格时获得了一些帮助: Adding formulas to excel spreadsheet using python
我需要移动到使用openpyxl,在增加行数的同时做同样的事情并填充列时遇到了问题。 如果我尝试:
for i,cellObj in enumerate(ws3['AC2:AC'+str(ws3.max_row)],2):
cellObj[0].value = "=VLOOKUP(B${0},'SheetName'!$B$2:$R$2199,17,FALSE)".format(i)
我尝试了前面给出的示例,但结果相同,工作表中未输入任何公式。
import openpyxl
wb = openpyxl.load_workbook('testy.xlsx')
Sheet = wb.get_sheet_by_name('Sheet1')
for i,cellObj in enumerate(Sheet.columns[1],1):
cellObj.value = '=IF($A${0}=$B${0},"Match","Mismatch")'.format(i)
wb.save('testy.xlsx')
任何指针将不胜感激。
解决方法
尽管我在打开文档时excel发出了循环引用警告,但此代码对我有用。请注意,我必须在公式中将工作表名称设置为Sheet1。
import openpyxl
wb = openpyxl.load_workbook('test.xlsx')
print("\nAll Sheets:",wb.sheetnames,end='\n\n')
Sheet = wb['Sheet1']
for i,cellObj in enumerate(list(Sheet.columns)[1],1):
f = "=VLOOKUP(B${0},'Sheet1'!$B$2:$R$2199,17,FALSE)".format(i)
print(f)
cellObj.value = f
wb.save('testy.xlsx')