[Python]Export de donnees cellule vers autre fichier

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
stef_02
Fraîchement OOthentifié
Messages : 4
Inscription : 09 juil. 2018 06:23

[Python]Export de donnees cellule vers autre fichier

Message par stef_02 »

Bonjour
Je dois faire une macro (codée en python) pour un fichier calc. Cette macro consiste à exporter des données contenues dans certaines cellules vers un autre fichier.
je l'ai écrite avec notepad++, et donc mise dans le fichier Scripts de LibreOffice mais LibreOffice la reconnait comme un dossier et pas un module/script.
Je n'ai pas trouver de solution sur les forums. Quelles erreurs aurais je pu faire? faut -il obligatoirement mettre les bibliothèques python dans python?
Merci
Dernière modification par Oukcha le 09 juil. 2018 08:17, modifié 2 fois.
Raison : Titre corrigé
Libre Office 5.2.6.2 (version obligatoire)
Windows 7
stef_02
Fraîchement OOthentifié
Messages : 4
Inscription : 09 juil. 2018 06:23

Re: [Calc]macro python non reconnue

Message par stef_02 »

Code : Tout sélectionner

#-*- coding: utf-8 -*-

import os
from datetime import datetime, date, timedelta , time
from odsreader import ODSReader
import os, shutil
import ftplib
from ftplib import FTP
from os import chdir
import os.path

def Bouton_QuandClic( ):
   


    

    # Passage de t0 en TU
    # Date et heure actuelles
    Now= datetime.now()
    # Heure servant pour le passage en heure TU
    TU=timedelta(hours=2)
    TU1=timedelta(hours=1)
    if Now > datetime(2016,03,27,02,00,00) and Now < datetime(2016,10,30,03,00,00):
        #Heure en TU= Heure actuelle - 2H
        maintenant_TU=Now-TU
    elif Now > datetime(2017,03,26,02,00,00) and Now < datetime(2017,10,29,03,00,00):
        maintenant_TU=Now-TU
    elif Now > datetime(2018,03,25,02,00,00) and Now < datetime(2018,10,28,03,00,00):
        maintenant_TU=Now-TU
    elif Now > datetime(2019,03,24,02,00,00) and Now < datetime(2019,10,27,03,00,00):
        maintenant_TU=Now-TU
    elif Now > datetime(2020,03,29,02,00,00) and Now < datetime(2020,10,25,03,00,00):
        maintenant_TU=Now-TU
    else
        maintenant_TU=Now-TU1

    # Répertoire local entree
    chemin= "C:/"
    if chemin >0:
        Chemin_export="C:/"

        # Test si présence de prévisions
        Nb_previ_feuille1 =0
        Nb_previ_feuille2=0
        Nb_previ_feuille3=0
        Previ=""

        #Sélection du classeur Calc
        fichier_ods='fichier.ods'
        classeur= odsReader.ODSReader(fichier_ods)
        #Sélection des feuilles utilisées
        feuille1 = classeur.getSheet("feuille1")
        feuille2 = classeur.getSheet("feuille2")
        feuille3= classeur.getSheet("feuille3")

        # relevé des données
        for I in range(1,50+1):
            date_prevision_TU= (ligne_101=feuille1[1+I])
            if date_prevision_TU and Nb_previ_feuille1<4:
                if date_prevision_TU > maintenant_TU and isnumeric(ligne_104=feuille1[1+I]):
                    Nb_previ_feuille1 = Nb_previ_feuille1 + 1
                    Previ = Previ + "/n"+ format(maintenant_TU, "%d/%m/%y %H:%M") + format(ligne_104=feuille1[1+I], "0.00") + ";-999.999;-999.999"
        for I in range(1,50+1):
            date_prevision_TU=(ligne_101=feuille2[1+I])
            if date_prevision_TU and Nb_previ_feuille2<4:
                if date_prevision_TU >maintenant_TU and isnumeric(ligne_104=feuille2[1+I]):
                    Nb_previ_feuille2 = Nb_previ_feuille2 +1
                    Previ = Previ + "/n" + format(maintenant_TU, "%d/%m/%y %H:%M") + ";-999.999;" + format(ligne_104=feuille2[1+I], "0.00") + ";-999.999"

        for I in range(1,50+1):
            date_prevision_TU=(ligne_101=feuille3[1+I])
            if date_prevision_TU and Nb_previ_feuille3 <4 :
                if date_prevision_TU> maintenant_TU and isnumeric(ligne_104=feuille3[1+I]):
                    Nb_previ_feuille3 = Nb_previ_feuille3+1
                    Previ=Previ + "/n"+ format(maintenant_TU, "%d/%m/%y %H:%M") + ";999.999;-999.999;" + Format(ligne_104=feuille3[1+I], "0.00")
Voila une partie du code
Libre Office 5.2.6.2 (version obligatoire)
Windows 7
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 3949
Inscription : 06 oct. 2008 08:03

Re: [Calc]macro python non reconnue

Message par Oukcha »

Bonjour et bienvenue,
stef_02 a écrit :Je dois faire une macro (codée en python)
Dans ce cas là, la balise à employer est [Python].
stef_02 a écrit : Cette macro consiste à exporter des données contenues dans certaines cellules vers un autre fichier.
Voilà ce qui doit figurer dans votre titre, le terme "Macro" étant implicite.
(relire le bandeau rouge en haut de page)

Titre corrigé par la modération.

Merci de ne pas poster plusieurs messages à la suite, si vous devez ajouter un complément d'information, le bouton "Editer" à la droite du message permet d'y remédier.
Image

Cordialement
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Python]Export de donnees cellule vers autre fichier

Message par Hubert Lambert »

Bonjour,
stef_02 a écrit :Quelles erreurs aurais je pu faire? faut -il obligatoirement mettre les bibliothèques python dans python?
Oui, les scripts python ne seront reconnus que s'ils se trouvent dans le répertoire <user>/Scripts/python/.
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
LibreOfficiant
Membre lOOyal
Membre lOOyal
Messages : 40
Inscription : 03 janv. 2017 13:54

Re: [Python]Export de donnees cellule vers autre fichier

Message par LibreOfficiant »

Bonjour,

cf. le lien de ma signature vers le wiki de LibreOffice pour plus d’infos sur les macros Python
libO 5.4 64bit, (PortableApps: libO 6.0, aOO 4.1, OOo 3.2 32bit) sur Win7/Win10 x64 | aOO 4.1.x et libO 5.4.x sur Mint 18 Sarah et OSX 10.9 Mavericks x64
Boîte à Outils Python: Geany, PyCharm et bien sûr APSO, MRI..
https://wiki.documentfoundation.org/Mac ... n_Guide/fr
stef_02
Fraîchement OOthentifié
Messages : 4
Inscription : 09 juil. 2018 06:23

Re: [Python]Export de donnees cellule vers autre fichier

Message par stef_02 »

Bonjour, merci de vos réponses même si celles ci ne m'ont pas été très utiles. j'ai trouvé, je pense, la source de mon problème. Une des bibliothèques que j'utilise n'a pas l'air de fonctionner/d’être complète puis elle est écrite en python2 et je travaille en python3. Je dois donc changer, je vais chercher une bibliothèque qui lit des cellules des feuilles d'un fichier calc. Si vous en avez des bonnes, je ne suis pas contre que vous me les partagiez :)
Libre Office 5.2.6.2 (version obligatoire)
Windows 7
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Python]Export de donnees cellule vers autre fichier

Message par Hubert Lambert »

On ne pourra pas t'aider plus si tu ne nous aides pas à comprendre ton besoin et ton problème.
Précises-nous le contexte d'utilisation (depuis LibreOffice ? depuis un programme extérieur ?...), fournis-nous le code (complet) que tu utilises et un fichier exemple (même avec des données bidons).
 Ajout : Je viens de jeter un oeil plus attentif sur ton bout de code et, si je comprends bien, tu souhaites manipuler des fichiers ods en dehors de toute interaction avec OpenOffice ou LibreOffice. Si c'est bien le cas, tu ne trouveras pas beaucoup d'infos sur ce forum, avant tout consacré à l'utilisation des suites bureautiques. J'ai essayé, il y a un certain temps, de jouer avec odfpy, mais la prise en main était plutôt ardue et requiert une bonne connaissance du format odf. Il existe également ezodf, qui semble avoir un niveau d'abstraction plus élevé, mais je ne connais absolument pas. Un exemple tiré de leur site :

Code : Tout sélectionner

import ezodf
ods = ezodf.newdoc('ods')
sheet = ezodf.Sheet('SUM Formula')
ods.sheets += sheet
for col in range(5):
    for row in range(10):
        sheet[row,col].set_value(col*10. + row)
sheet['F9'].set_value("Summe:")
sheet['F10'].formula = 'of:=SUM([.A1:.E10])'
sheet['F1'].formula = 'of:=SUM([.A1];[.B1];[.C1];[.D1];[.E1])'
ods.saveas('sum_formula.ods') 
Le plus simple me semble-t-il serait d'utiliser l'API UNO utilisé par Open|LibreOffice, si c'est possible pour toi. Tu trouveras ici toute l'aide utile. 
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
stef_02
Fraîchement OOthentifié
Messages : 4
Inscription : 09 juil. 2018 06:23

Re: [Python]Export de donnees cellule vers autre fichier

Message par stef_02 »

Bonjour merci pour tes réponse. En effet tu as compris ce que j'ai besoin de faire j'ai essayer de télécharger ezodf, mais en le testant que IDLE de Python ça me met un message comme quoi il faut lxml, bon ok je le prend et rebelotte message d'erreur il trouve pas le bon module('etree'), aurait tu un lien pour lxml sans qu'il manque quoique ce soit et dans les bons formats(il y a des fichier PXD, PXI, H, PYX dedans)? s'il te plait
Quant a odfpy, je n'arrive pas à trouver comment lire les cellules/lignes/colonnes

Bref merci de ton aide, je continue de chercher de mon coter
Libre Office 5.2.6.2 (version obligatoire)
Windows 7