А) Для запуска формул необходимо открыть файл в Excel. Как вы утверждаете:
Насколько я понимаю, Openpyxl на самом деле не будет запускать формулы, но я могу написать в Excel и затем обновить файл для его запуска?
If by "обновить файл, чтобы запустить его «вы имеете в виду открыть файл в Excel, тогда да, Excel выполнит формулу.
B) Ошибка, которую вы получаете, на самом деле является просто предупреждением о том, что используемая вами функция не будетбыть доступным в будущих версиях Openpyxl. В этом случае в предупреждении также указывается правильный способ доступа к листу.
Вызов устаревшей функции get_sheet_by_name (Использование wb [sheetname]) [выделение добавлено]
Чтобы избежать предупреждения, замените строку на:
worksheet=myworkbook['Sheet1']
C) Когда вы добавляете формулу в ячейку, используя Openpyxl, вы должны включить символ =
вначало формулы, поэтому ваша строка должна быть:
mycell.value="=index(B4:B72,match(B1,A4:A72,0))"
D) В своем выражении print
вы передаете ему объект mycell
, поэтому он печатает «имя» объекта<Cell 'Sheet1'.B2>
. Это может быть полезно, если вы хотите убедиться, что ваша переменная mycell
указывает на правильную ячейку в книге, но это не то, что вам нужно. Чтобы получить доступ к содержимому ячейки, вам нужно обратиться к .value
этой ячейки. Измените свое заявление на печать так:
print(mycell.value)
Соберите все это вместе:
from openpyxl import load_workbook
path= "C:\\Users\\Me\\Documents\\Python\\File.xlsx"
myworkbook=load_workbook(path)
worksheet=myworkbook['Sheet1']
mycell=worksheet['B2']
mycell.value="=index(B4:B72,match(B1,A4:A72,0))"
print(mycell.value)