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 :

Lecture de fichiers sylk


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut Lecture de fichiers sylk
    Bonjour,

    Je dois manipuler des tableaux de données avec Python

    Je suis habitué à traiter des données provenant de fichier .xls en utilisant xlrd.

    Mon problème est que l'on vient de me fournir des données au format .slk
    Alors vous allez me dire qu'il suffit de les ouvrir avec excel et de les enregistrer au format .xls
    Mais j'ai environ 200 fichiers à traiter!
    Donc je me vois mal les convertir un par un.

    Quelqu'un aurait un moyen, soit de convertir de manière automatique mes fichiers .slk en .xls, soit de lire directement les fichiers .slk ??

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Par défaut
    Bonjour,
    Une petite recherche montre que les fichiers .sylk sont propriétaires, donc avec Python cela parait compromis. Ne serait-il pas possible d'automatiser la conversion sylk -> xls sous excel puis de traiter les fichiers xls avec Python?

    Jean-Patrick

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Le format sylk est un très vieux format de MS, et les logiciels actuels ont quelquefois un peu de mal à les lire.

    Voilà un bon début de solution.

    Il faut:
    - le module w32com donné par Pywin32: http://starship.python.net/crew/mham...Downloads.html.
    - et Excel! j'ai vérifié que ça fonctionnait avec Excel 2003 et 2007.

    Voilà le code proposé. Il permet sous Python de lire un fichier lisible par Excel, d'afficher son contenu sous forme de liste (pour une simple vérification visuelle) et de l'enregistrer sous un autre nom et un autre format. Cette même classe pourrait être complétée par des méthodes permettant de lire et modifier le contenu des cellules, etc.

    En lecture, ça marche avec des fichiers .slk, mais il y a tout de même une fenêtre d'erreur qui demande si elle doit signaler toutes les erreurs: répondre non! D'après mes essais, la lecture des données est tout de même correcte. A vérifier quand même. Et je ne sais pas ce qu'il en est des éventuelles macros...

    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from __future__ import division
    # Python 2.7
     
    import win32com.client
     
    #############################################################################
    class Excelfacile(object):
     
        def __init__(self, fichier=""):
     
            self.excel = win32com.client.Dispatch('Excel.Application')
            self.fichier = fichier
            if fichier=="":
                self.wb = self.excel.Workbooks.Add()
            else:
                self.wb = self.excel.Workbooks.Open(fichier)
     
        def nbrows(self, sheet=1):
            """retourne le nombre total de ligne utilisées"""
            return self.wb.Sheets(sheet).UsedRange.Rows.Count
     
        def nbcols(self, sheet=1):
            """retourne le nombre total de colonnes utilisées"""
            return self.wb.Sheets(sheet).UsedRange.Columns.Count
     
        def listeval(self, sheet=1, row1=1, col1=1, row2=None, col2=None):
            """retourne la liste des valeurs du rectangle [[row1,col1][row2,col2]]
               de la feuille 'sheet' 
               si row2 et/ou col2 = None, on prend la dernière ligne et/ou colonne   
            """        
            cell1 = self.wb.Worksheets(sheet).Cells(row1, col1)
            if row2==None:
                row2 = self.nbrows(sheet) - row1 + 1
            if col2==None:
                col2 = self.nbcols(sheet) - col1 + 1
            cell2 = self.wb.Worksheets(sheet).Cells(row2, col2)
            return self.wb.Worksheets(sheet).Range(cell1, cell2).Value
     
        def save(self, nouvfichier="", ):
            if nouvfichier=="":
                self.wb.Save()
            else:
                self.fichier = nouvfichier
                self.wb.SaveAs(nouvfichier)
     
        def close(self):
            self.wb.Close(SaveChanges=0)
            del self.excel
     
    #############################################################################
    if __name__ == "__main__":
     
        # chargement    
        excel = Excelfacile(r"C:\Chemin\vers\essai4.slk")
     
        # affichage des valeurs
        for ligne in excel.listeval():
            print ligne
     
        # enregistrement sous le format xls
        excel.save(r"C:\Chemin\vers\essai4.xls")
     
        # fermeture
        excel.close()

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 19h27
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 11h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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