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 :

Copier feuilles fichier Excel dans un tableau [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mai 2017
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mai 2017
    Messages : 479
    Par défaut Copier feuilles fichier Excel dans un tableau
    Bonjour à tous,

    Je souhaite lire chaque feuille d'un fichier Excel et de mettre celles-ci dans un tableau respectif, c'est à dire feuille1 dans array1, etc...

    J'utilise la bibliothèque xldr pour lire le dit fichier Excel.

    J'exploite ce code trouvé sur le net mais il ne correspond pas exactement à mes attentes.

    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
     
    import os
    import xlrd
    import numpy as np
    import sys
     
    #File to open
    workbook = xlrd.open_workbook('mon_fichier.xls')
     
    SheetNameList = workbook.sheet_names()
    print(SheetNameList)
    for i in np.arange(len(SheetNameList)):
        print(SheetNameList[i])
     
    #Number of column and rows into sheet(0) here
    worksheet = workbook.sheet_by_name(SheetNameList[0])
    num_rows = worksheet.nrows 
    num_cells = worksheet.ncols
     
     
    num_rows=36
     
    #Number of the first line to be read
    curr_row = 1
    while curr_row < num_rows:
        row = worksheet.row(curr_row)
        print (row, len(row), row[0], row[1])
        #print( 'Row: ', curr_row )
        #print( row, len(row), row[0] )
     
        curr_cell = 0
        while curr_cell < num_cells:
            #Cell Types: 0=Empty, 1=Text, 2=Number, 3=Date, 4=Boolean, 5=Error, 6=Blank
            cell_type = worksheet.cell_type(curr_row, curr_cell)
            if cell_type != 0:
                cell_value = worksheet.cell_value(curr_row, curr_cell)
                print(cell_value )
                curr_cell += 1
            else:
                curr_cell += 1
        curr_row += 1
    Merci par avance pour vos conseils :-)

  2. #2
    Membre éclairé
    Homme Profil pro
    Data Lover
    Inscrit en
    Décembre 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data Lover
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 96
    Par défaut
    Bonjour,

    Quelle est la structure (nombre de colonnes par exemple) de ces fichiers Excel. Est-ce qu'ils ont tous la structure ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mai 2017
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mai 2017
    Messages : 479
    Par défaut
    J'ai 16 feuilles dans mon classeur, mais concrètement j'en utilise 12 (1 feuille par mois). Le nombre de colonne est toujours le même, seul le nombre de ligne varie.

    EDIT:

    J'arrive à lire le contenu de mon classeur,mais je n'arrive pas à intégrer dans un tableau 2D...

    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
    NumberOfRow    = worksheet.nrows
    NumberOfColumn = worksheet.ncols
    print('Row:',NumberOfRow)
    print('Column:',NumberOfColumn)
     
    ARRAY_DEBUG = [[0]*NumberOfColumn]*NumberOfRow
    #print(ARRAY_DEBUG)
     
    x = range(0, NumberOfRow)
    y = range(0, NumberOfColumn)
    r=0
    c=0
     
    for r in x:
        for c in y:
            print(worksheet.cell_value(r, c))

  4. #4
    Membre éclairé
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mai 2017
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mai 2017
    Messages : 479
    Par défaut
    J'ai réussi à faire ce que je voulais sur une page :-). Maintenant je dois remodeler mon code pour lire feuille par feuille.

    Je poste mon bout de code pour lire une page est stocker dans un 2D array (pas le plus efficace, mais à l'air de fonctionner).

    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
    import os
    import xlrd
    from array import *
    import numpy as np
    import sys
     
    #File to open
    workbook      = xlrd.open_workbook('local/2020.xlsx')
    SheetNameList = workbook.sheet_names()
    #print(SheetNameList)
    #for i in np.arange(len(SheetNameList)):
        #print(SheetNameList[i])
     
    #Number of column and rows into sheet(0) here
    worksheet      = workbook.sheet_by_name(SheetNameList[0])
    NumberOfRow    = worksheet.nrows
    NumberOfColumn = worksheet.ncols
    print('Row:',NumberOfRow)
    print('Column:',NumberOfColumn)
     
    x = range(0, NumberOfRow)
    y = range(0, NumberOfColumn)
    r=0
    c=0
     
    Row = []
    for r in x:
        Column = []
        for c in y:
            Column.append(worksheet.cell_value(r, c))
        Row.append(Column)
     
    print(Row)
     
    #for Column in Row:
        #for item in Column:
            #print(item, end = " ")
        #print()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. exporter un fichier Excel dans un tableau de DB
    Par zilis dans le forum VB.NET
    Réponses: 3
    Dernier message: 29/10/2012, 16h32
  2. [XL-2007] Copier plusieurs fichiers Excel dans un nouvel onglet à chaque fois
    Par OptionExplicitSu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/06/2012, 17h48
  3. [XL-2003] Copier 3 fichiers excel dans 1.
    Par visto94 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/09/2010, 13h26
  4. macro pour copier un fichier excel dans un dossier
    Par mery13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/03/2009, 13h36
  5. Copier un fichier excel dans un power point
    Par jhpotter dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/05/2008, 10h11

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