[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

programme python pour OpenOffice.org


From plaunay1 <pierre dot launay at ac-rennes dot fr>
Subject programme python pour OpenOffice.org
Date Thu, 22 Feb 2007 21:29:42 +0100

Bonjour,
Il y a quelques temps des personnes demandaient des programmes ou macros pour OpenOffice.


Voici une contribution d'un script python pour OpenOffice.org qui transforme un tableau dans une feuille calc en tableau C pour SDCC, respecte la norme C, normalement.

Ce script doit être placé sous Linux dans :
~/.openoffice.org2/user/Scripts/python/
Il faut créer soi-même le répertoire python avec mkdir par exemple
Explication:
unix 	* ~/.openoffice.org.2.0/user/Scripts/python*

Note, that the last *python* subdirectory may need to be created initially. Make sure, the python is completly written lowercase. You can add arbitrary deeply nested subdirectories, the names of these directories are reflected in the UI.
Lien: http://udk.openoffice.org/python/scriptingframework/index.html


Fichier tab_calc2c.py :
import uno
import string
def ods2h(): #transforme un tableau calc ou tableur OpenOffice en tableau C (2 dimensions)
model = XSCRIPTCONTEXT.getDocument()
oSheet = model.CurrentController.getActiveSheet()
i=j=0 #on recherche taille tableau avec la première ligne vide (i) et colonne vide(j)
while(oSheet.getCellByPosition( 0,i ).getString()!=''): i+=1 #on enlèvera 1 pour la taille, ligne 0 : noms champs
while(oSheet.getCellByPosition( j, 0 ).getString()!=''): j+=1
texte="const unsigned char rythmes ["+str(i-1)+"]["+str(j)+"]={" #début tableau
#La ligne 0 est omise Noms des champs
for k in range(1,i): #k précise la ligne
ligne="{" #début de chaque ligne
for m in range(j): # m précise la colonne
cellule=oSheet.getCellByPosition( m, k ) #colonne,ligne
l=cellule.getValue() #ici ce sont des valeurs : nombre
ligne+=str(int(l))+','#chaque valeur est séparée par une virgule
texte+=ligne[:-1]+'},\n' #on enlève la virgule puis on ferme la ligne avec } et retour à la ligne
texte=texte[:-2]+'};\n' #dernière ligne, on enlève ,\n et on ferme le tableau }; et retour à la ligne
f=open("/home/per/temp/rythme.h",'w')
f.write(texte)
f.close()
#g_exportedScripts = ods2h, #export pour l'utiliser, je sais pas trop si ça sert


D'autres explications sur la programmation sous OpenOffice.org
http://www.oooforum.org/forum/viewtopic.phtml?t=14409 en anglais
http://fr.openoffice.org/servlets/Search? en français

La programmation libre permet de garder son temps pour réfléchir, plutôt que de le perdre à recopier des listes de nombre, et à la partager avec une communauté qui peu 'adapter à sa guise.

Pour être honnête, ce programme est écrit pour le thème BAC 2007 des teminales pour qu'il cherche à bien remplir le tableau des rythmes sous OpenOffice plutôt qu'à perdre leur temps à le recopier à la main tous les termes dans un fichier flowcode.

Pour les élèves malicieux qui consulteraient la liste, ce programme ne vous dira pas comment remplir le tableau...

Librement,
Pierre