Bonjour,
J'ai écrit un fichier qui transforme un tableau OpenOffice en un tableau C pour SDCC (pour un microcontrôleur)
Voici la macro en python :
Fichier tab_calc2c.py :

import uno
import string,os,sys,urllib
def ods2h(): #transforme un tableau calc ou tableur OpenOffice en tableau C (2 dimensions)
   model = XSCRIPTCONTEXT.getDocument()
   xNom=model.getURL() #nom complet avec chemin du fichier
   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
   #on récupère le nom complet du fichier lu pour créer fichier de sortie
e=open(xNom[7:-3]+'h','w') #on enlève file:// et l'extension ods rempacé par h
   e.write(texte)
   e.close()
#g_exportedScripts = ods2h, #export pour l'utiliser, je sais pas trop si ça sert

La macro fonctionne sous GNU Linux distribution Debian Etch, le fichier .h est mis dans le même répertoire que le fichier .ods ouvert. Mais j'ai un soucis pour le faire fonctionner sous Windows je dois remplacer : e=open(xNom[7:-3]+'h','w') par e=open(xNom[8:-3]+'h','w') : on enlève file:///

Existe-t-il une fonction pour récupérer le nom du fichier sans URL, l'inverse de ConvertToURL ?

Pierre Launay

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à