Bonjour
j'arrive a écrire dans un tableau Calc OpenOffice.
Comment peut-on agir sur la largeur des colonnes (je ne trouve pas de doc)
Merci d'avance pour vos réponses.
Cordialement
Bonjour
j'arrive a écrire dans un tableau Calc OpenOffice.
Comment peut-on agir sur la largeur des colonnes (je ne trouve pas de doc)
Merci d'avance pour vos réponses.
Cordialement
Salut,
Et vous avez cherché comment? On trouve cela assez facilement...
- W
Merci
j'ai cherche avec python erzodf2.
Je ne connais pas uno, je vais me documenter.
je pense qu'il faut l'installer ?
Encore merci
Hello,
ezodf2 n'agit pas à l'intérieur de calc, il permet de traiter les fichiers de type ODF.
uno est déjà installé dans le python d'OpenOffice et de LibreOffice. Avec une macro python O.O L.O on est capable de faire l'ajustement de colonnes.
Avec ce code qui correspond à une macro python que l'on appelle
on obtient ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 import uno def ajusteCols(*args): doc = XSCRIPTCONTEXT.getDocument() oSheet = doc.Sheets.getByName('Feuille1') oColumns = oSheet.getColumns() oColumns.getByName("A").Width = 4000 # 4000 = 4 cm oColumns.getByName("B").Width = 2000 oColumns.getByName("C").Width = 8000
Ami calmant, J.P
Merci pour vos explications.
J’espérais que l'on pouvait 'piloter' OpenOffice avec un programme de python3.
Dommage et encore Merci.
Très bon forum.
Cordialement
Hello,
tu ne nous as pas dit sous quel O.S tu étais et quelle version d'OpenOffice ou de LibreOffice tu utilisais.
Sous Linux, LibreOffice utilise le python 3 du système, il installe pyuno dans ce python donc tu dois pouvoir l'utiliser de "l'extérieur". A noter qu'OpenOffice lui utilise du python 2.
Voici un exemple de code pour "piloter" libreoffice de l'extérieur sous linux (essayé sous Ubuntu 20.04) :
Exemple de code :
A noter que pour que cela fonctionne il faut que LibreOffice soit lancé en mode "écoute" auparavant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import uno from com.sun.star.connection import NoConnectException localContext = uno.getComponentContext() resolver = localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext) try: ctx = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext") except NoConnectException as e: print("LibreOffice is not running or not listening on the port given - (" + e.Message + ")") exit smgr = ctx.ServiceManager desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx) doc = desktop.loadComponentFromURL("file:///home/user/Documents/ajustementColonnes.ods", "_blank", 0, []) win = doc.CurrentController.Frame.ContainerWindow # win.Visible = False # mode invisible feuille = doc.Sheets.getByName("Feuille1") feuille.getColumns().getByName("D").Width = 4000 feuille.getColumns().getByName("E").Width = 2000 feuille.getColumns().getByName("F").Width = 8000 # doc.Store() # écrire fichier doc.dispose() #
en mode visible :
en mode invisible :soffice "--accept=socket,host=127.0.0.1,port=2002,tcpNoDelay=1;urp;"
Sous Windows, on peut piloter LibreOffice, OpenOffice en utilisant les objets COM. Pour cela en python, il faut utiliser win32com qui se trouve dans pywin32.soffice "--headless --accept=socket,host=127.0.0.1,port=2002,tcpNoDelay=1;urp;"
Exemple de code :
Ami calmant, J.P
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 from win32com.client import Dispatch objServiceManager = Dispatch("com.sun.star.ServiceManager") w = objServiceManager.CreateInstance("com.sun.star.frame.Desktop") doc= w.loadComponentFromURL("file:///d:/dev/LibreOffice/ajustementColonnes.ods", "_blank", 0, []) win = doc.CurrentController.Frame.ContainerWindow #win.Visible = False # mode invisible feuille = doc.Sheets.getByName("Feuille1") feuille.getColumns().getByName("D").Width = 4000 feuille.getColumns().getByName("E").Width = 2000 feuille.getColumns().getByName("F").Width = 8000 #doc.Store() # écrire fichier doc.dispose() # fermer fichier
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager