Запуск функций из надстроек Excel в Python с использованием openpyxl - PullRequest
0 голосов
/ 30 октября 2019

Я хотел бы знать, можно ли или нет вызывать функции 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" нет значения.

...