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]