Пользовательская функция Python для LibreOffice CalcPython

Программы на Python
Ответить
Anonymous
 Пользовательская функция Python для LibreOffice Calc

Сообщение Anonymous »

Вопрос. Я пытаюсь создать пользовательскую функцию Python, которая работает с диапазоном значений электронной таблицы и возвращает одно значение.
Исследование: Откуда После нескольких часов поиска в 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
Я вызываю UDF по этой формуле: =CALL_MODE_FREQ("A2:B11")
Передача диапазона в виде строки кажется проблема. Я создал модуль под названием 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
Я не могу найти документацию по объектным моделям для этих интерфейсов ниже верхнего уровня (т. е. документа или листа). Оболочка вызывает скрипт Python, и мое фиктивное возвращаемое значение записывается в ячейку с формулой, так что эта часть работает. Надеюсь, кто-нибудь укажет мне правильное направление.

Подробнее здесь: https://stackoverflow.com/questions/792 ... ffice-calc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»