IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

script en exe ou web page


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Par défaut script en exe ou web page
    Bonjour, j'ai un script python que je fais tourner pour traiter des fichiers Excel jusque la tout va bien. Mais maintenant les employés de mon entreprise vont devoir faire la même opération et il y a des chemins d'acces a changer dans le code, ils ne vont pas y arriver....j'aimerais avoir des forms ou autre pour une modification simple et un lancement de l'application sans avoir le programme installé sur les pc, des idées ??
    Merci beaucoup !!

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    #!python.exe
    import site
     
    #!python.exe
    import site
     
    from win32com.client import Dispatch, constants
    import os
     
    # PUT YOUR OWN PATH ===============================================
    MasterFilePath = 'C:/Essai/masterfile.xls'
    OutputFilePath = 'C:/Essai/OUTPUT_1/'
    RecievedFilesPath = 'c:/Essai/received_files/'
    ResultFilePath = 'C:/Essai/'
    ResultFileName = 'Results.xls'
    bExcelVisible = False
    # ===============================================================
     
    class Utility(object):
     
        @staticmethod
        def xlSmartOpen(app, fileName, filePath):
            wbRet = None
            for wb in app.Workbooks:
                if wb.Name == fileName:
                    wbRet = wb
                    break
            else:
                if os.path.exists(filePath+fileName):wbRet = app.Workbooks.Open(filePath+fileName)
                else:
                    wbRet=app.Workbooks.Add()
                    wbRet.SaveAs(filePath+fileName)
            return wbRet
     
     
    class ManipExcelFiles(object):
        def __init__(self, folder, inputfilename , outputFolder,masterfile):
            # Next implement that if file name = * we should take all the files in folder
            self.excel = Dispatch("Excel.Application")
            self.excel.Visible = bExcelVisible
            # I open Masterfile
            self.resultWb = self.excel.Workbooks.Open(masterfile)
            self.AggregateWb = Utility.xlSmartOpen(self.excel,ResultFileName,ResultFilePath)
            # I loop over input file
            if inputfilename=='*.xls':
                dirList=os.listdir(folder)
            else:
                dirList = [inputfilename]
            ColumnIndic = 6
            for filename in dirList:
                print "Je fais "+ filename
                # Je load les input file et j enleve la protection =================
                self.InputFileWb = self.excel.Workbooks.Open(folder+filename)
                self.InputFileWb.Worksheets('Result').Visible = True
                self.InputFileWb.Worksheets('Result').Select
                self.InputFileWb.Worksheets('Result').Unprotect('SOLSTICE')
                self.InputFileWs = self.InputFileWb.Worksheets('Result')
                # Je fais la copie    =================
                self.InputFileWs.Activate()
                self.InputFileWs.Cells(1,1).Select()
                self.InputFileWs.Range(self.InputFileWs.Cells(1,1),self.InputFileWs.Cells(1547,6)).Select()
                self.excel.Selection.Copy()
                # Je paste dans MasterFile   =================
                self.resultWb.Worksheets('Result').Activate()
                self.resultWb.Worksheets('Result').Cells(1,1).Select()
                self.excel.Selection.PasteSpecial( Paste=constants.xlPasteValues)
                #self.excel.Selection.PasteSpecial( Paste=constants.xlPasteFormats)
                # Je sauve MasterFile   =================
                self.excel.CutCopyMode = False
                fileoutputname = outputFolder+self.resultWb.Worksheets('Result').Cells(2,6).Value+'.xls'
                self.resultWb.SaveAs(fileoutputname)
                # Je refais la copie   =================
                self.InputFileWs.Activate()
                self.InputFileWs.Cells(1,1).Select()
                self.InputFileWs.Range(self.InputFileWs.Cells(1,6),self.InputFileWs.Cells(1547,6)).Select()
                self.excel.Selection.Copy()
                # Je paste dans fichier aggregation   =================
                self.AggregateWb.Worksheets[0].Activate()
                self.AggregateWb.Worksheets[0].Cells(1,ColumnIndic).Select()
                self.excel.Selection.PasteSpecial( Paste=constants.xlPasteValues)
                self.excel.Selection.PasteSpecial( Paste=constants.xlPasteFormats)
                # J'incremente pour next paste   =================
                ColumnIndic = ColumnIndic + 1
                # Je close input file   =================
                self.excel.CutCopyMode = False
                self.InputFileWb.Close(SaveChanges=False)
     
            # Loop is over je close le file result  =================
            self.excel.CutCopyMode = False
            self.AggregateWb.Close(SaveChanges=True)
     
            del self.excel
     
     
    testfile = ManipExcelFiles(RecievedFilesPath,'*.xls',OutputFilePath,MasterFilePath)
     
     
    # ===============================================================  
    FilePath = 'C:/Essai/'
    DataProfilesfilename = 'DataProfiles.xls'
    PlanPensionfilename = 'PlanPension.xls'
    # ===============================================================
     
    class ManipExcelMacro2(object):
                            # Start Excel and open the XLS file:
                            excel = Dispatch('Excel.Application')
                            excel.Visible = False
     
                            workbook = excel.Workbooks.Open(FilePath+PlanPensionfilename)
     
                            excel.Run('auto_open') 
     
                            workbook.Close(SaveChanges=True)
     
                            workbook = excel.Workbooks.Open(FilePath+DataProfilesfilename)
     
                            excel.Run('START')                      
     
                            # Save as CSV:
                            # xlCSVWindows                  =0x17       # from enum XlFileFormat
                            # workbook.SaveAs(Filename=filepath+".csv",FileFormat=xlCSVWindows)
     
                            # Close workbook and Excel
                            workbook.Close(SaveChanges=True)
     
                            excel.Quit()

  2. #2
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    hummm, ca me parait un peu obscur!

    si les chemin sont tous sur la même machine, je te suggère d'installer un serveur zope sur cette machine, tu pourra faire rapidement une interface web qui te permettera de déclencher ton traitement en spécifiant les path.
    Par contre il te faudra créer un produit zope qui appellera ton script actuel ou pourquoi pas transformer ton script en produit zope.
    si les chemin sont repartis sur plusieur poste, c'est je pense un peu le même principe mais il faut que tout les poste qui n'héberge pas le serveur soit déclarer comme lecteur réseau....

    voici une piste!

Discussions similaires

  1. Emplacement scripts et vitesse d'affichage page web
    Par Anibel dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/07/2013, 10h06
  2. [PHP 5.2] Lancer script batch à partir d'une page web
    Par -yasmine- dans le forum Langage
    Réponses: 16
    Dernier message: 23/04/2012, 14h52
  3. [XL-2007] VBA Excel : Comment executer un script .aspx inclus dans une page Web
    Par BrunoZZZ dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/08/2011, 12h09
  4. [ZF 1.6] Run as PHP script <> Run as PHP web page
    Par rochdi123 dans le forum MVC
    Réponses: 4
    Dernier message: 26/03/2010, 13h19
  5. problème d'affiche d'une diapo de format exe sur la page web
    Par kitcarson23 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 02/06/2008, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo