我已经定义了下面要在OpenOffice calc下执行的hellotest函数。 该函数只是在单元格(3,4)中写入Hello字。 当该函数作为宏执行时,该工作表将被修改,但是当通过名为HELLOTEST的基本函数执行该函数时,则什么也不会发生(见下文)。 似乎python函数被调用为返回的字符串“ Hello world”,它显示在调用单元格中,但是cell(3,4)未被修改。 我是否应该了解python函数只能作为宏执行,还是应该以其他方式使用XSCRIPTCONTEXT?
Python:
import uno
def hellotest():
oSheet = XSCRIPTCONTEXT.getDocument().getSheets().getByIndex(0)
oCell1 = oSheet.getCellByPosition(3,4)
oCell1.setString("Hello world")
return "Hello world"
基本功能:
REM ***** BASIC *****
REM Keep a global reference to the ScriptProvider, since this stuff may be called many times:
Global g_MasterScriptProvider
REM Specify location of Python script providing the cell functions:
Const URL_Main = "vnd.sun.star.script:hellotest.py$"
Const URL_Args = "?language=Python&location=user"
Function getMasterScriptProvider()
if NOT isObject(g_MasterScriptProvider) then
oMasterScriptProviderFactory = createUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
g_MasterScriptProvider = oMasterScriptProviderFactory.createScriptProvider("")
endif
getMasterScriptProvider = g_MasterScriptProvider
End Function
Function HELLOTEST(s$, optional iLen%)
sURL = URL_Main & "hellotest" & URL_Args
oMSP = getMasterScriptProvider()
oScript = oMSP.getScript(sURL)
x = oScript.invoke(Array(),Array(),Array())
HELLOTEST = x
End Function`