Я хотел бы знать, можно ли или нет вызывать функции Excel, установленные из надстроек, с помощью openpyxl.
Например, у меня нет проблем, если я использую nativeФункции Excel.
# Load libraries
from openpyxl import load_workbook
import pandas as pd
# Creates Excel workbook
wb = Workbook()
wb.save("Example.xlsx")
# Excel writer definition
book = load_workbook("Example.xlsx")
writer = pd.ExcelWriter("Example.xlsx", engine = "openpyxl")
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
ws = book.active
# Cell value definition
ws["A1"] = 1
ws["A2"] = 2
ws["A3"] = 3
# Native Excel function applied "SUM()"
ws["D4"] = "=SUM(A1:A3)"
# Saving workbook
writer.save()
Однако я не могу сделать то же самое, когда пытаюсь использовать функцию, установленную из надстройки.
Допустим, я установил следующую надстройку:
http://www.xlxtrfun.com/XlXtrFun/XlXtrFun.htm
И я хотел бы использовать функцию «ИНТЕРПОЛИТ».
# Load libraries
from openpyxl import Workbook
from openpyxl import load_workbook
import pandas as pd
# Creates Excel workbook
wb = Workbook()
wb.save("Example.xlsx")
# Excel writer definition
book = load_workbook("Example.xlsx")
writer = pd.ExcelWriter("Example.xlsx", engine = "openpyxl")
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
ws = book.active
# Cell value definition
ws["A1"] = 1
ws["A2"] = 2
ws["A3"] = 3
ws["A4"] = 4
ws["A5"] = 5
ws["B1"] = -0.1
ws["B2"] = 0.32
ws["B3"] = 0.62
ws["B4"] = -0.49
ws["B5"] = 0.72
ws["A7"] = 1.5
# Add-in function applied "INTERPOLATE()"
ws["B7"] = "=Interpolate($A$1:$A$5;$B$1:$B$5;A7;1;0)"
# Saving workbook
writer.save()
Код работает отлично. Однако, как только я открываю Example.xlsx, у меня появляется следующее сообщение:
https://www.dropbox.com/s/54f1vbf8hexkktu/Screenshot_3.PNG?dl=0&m=
, и вот результат:
https://www.dropbox.com/s/54f1vbf8hexkktu/Screenshot_3.PNG?dl=0&m=
Как видите, в ячейке "B7" нет значения.