J'essaie de créer un programme python (en utilisant pyUNO) pour apporter des modifications à une feuille de calcul OpenOffice.Chargement d'un document sur OpenOffice à l'aide d'un programme Python externe
J'ai déjà lancé OpenOffice en mode "Accepter" pour pouvoir me connecter à partir d'un programme externe. Apparemment, devrait être aussi facile que:
import uno
# get the uno component context from the PyUNO runtime
localContext = uno.getComponentContext()
# create the UnoUrlResolver
resolver = localContext.ServiceManager.createInstanceWithContext(
"com.sun.star.bridge.UnoUrlResolver", localContext)
# connect to the running office
ctx = resolver.resolve("uno:socket,host=localhost,port=2002;"
"urp;StarOffice.ComponentContext")
smgr = ctx.ServiceManager
# get the central desktop object
DESKTOP =smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
#The calling it's not exactly this way, just to simplify the code
DESKTOP.loadComponentFromURL('file.ods')
mais je reçois un AttributeError
lorsque je tente d'accéder loadComponentFromURL
. Si je fais un dir(DESKTOP)
, je l'ai vu que les attributs/méthodes suivantes:
['ActiveFrame', 'DispatchRecorderSupplier', 'ImplementationId', 'ImplementationName',
'IsPlugged', 'PropertySetInfo', 'SupportedServiceNames', 'SuspendQuickstartVeto',
'Title', 'Types', 'addEventListener', 'addPropertyChangeListener',
'addVetoableChangeListener', 'dispose', 'disposing', 'getImplementationId',
'getImplementationName', 'getPropertySetInfo', 'getPropertyValue',
'getSupportedServiceNames', 'getTypes', 'handle', 'queryInterface',
'removeEventListener', 'removePropertyChangeListener', 'removeVetoableChangeListener',
'setPropertyValue', 'supportsService']
J'ai lu qu'il ya un bug où faire la même chose, mais sur OpenOffice 3.0 (j'utilise OpenOffice 3.1 sur Red Hat5.3). J'ai essayé d'utiliser la solution de contournement énoncée here, mais ils ne semblent pas fonctionner.
Des idées?
La méthode ne se trouve pas, comme je l'ai essayé d'obtenir la méthode CESTI, appeler sans paramètres du shell interactif: - (J'ai aussi essayé de l'appeler avec quatre paramètres, je l'ai simplifié intentionnellement. – Khelben