Исследование: Откуда После нескольких часов поиска в Google я понял, что мне нужна базовая оболочка, которая вызывает мой скрипт Python. Вот что у меня получилось для обертки:
Код: Выделить всё
Function Call_mode_freq(range as string) as double
Dim oScriptProvider, oScript
oScriptProvider = ThisComponent.getScriptProvider()
oScript = oScriptProvider.getScript(_
"vnd.sun.star.script:stat_functions.py$mode_freq? language=Python&location=user")
Call_mode_freq = oScript.invoke(array(range), array(), array() )
End Function
Передача диапазона в виде строки кажется проблема. Я создал модуль под названием stat_functions.py, в котором есть функция mode_freq
Я пробовал использовать интерфейсы uno XSCRIPTCONTEXT и ScriptForge, но ни один из них не заработал. Вот моя неполная функция Python:
Код: Выделить всё
def mode_freq(arange):
# arange is a string e.g. "A3:B10"
# uno interface #####################################
oSheet = XSCRIPTCONTEXT.getDocument().getSheets().getByIndex(0)
oCell = oSheet.getCellByPosition(0,0)
# I want to get the values from "arange"
# ScriptForge interface #######################
doc = CreateScriptService("Calc")
# crange = doc.Sheets["Sheet1"][arange] # this fails. The error message says I'm supposed to specify a tuple of integers not a string.
# again, no idea how to get the values from a range
mode = 0 # dummy value to ensure something is returned to Calc cell with this UDF
return mode
Подробнее здесь: https://stackoverflow.com/questions/792 ... ffice-calc
Мобильная версия