web-dev-qa-db-fra.com

Comment utiliser python lire une colonne dans Excel

Je veux lire les données d'une colonne d'Excel, voici mon code:

import xlrd

file_location = "location/file_name.xlsx"

workbook = xlrd.open_workbook(file_location)

sheet = workbook.sheet_by_name('sheet')

x = []

for cell in sheet.col[9]:

    if isinstance(cell, float):

        x.append(cell)

print(x)

C'est faux car il n'y a pas de méthode dans la feuille appelée col [col.num], mais je veux juste extraire les données de la colonne 8 (colonne H), que puis-je faire?

4
Sirui Li

Vous pouvez obtenir les valeurs de la 8ème colonne comme ceci:

for rownum in range(sheet.nrows):
    x.append(sheet.cell(rownum, 7))
2
Roee Aharoni

Si vous n'êtes pas verrouillé avec xlrd, j'aurais probablement utilisé des pandas, ce qui est plutôt bien pour travailler avec des données de n'importe où: 

import pandas as pd

df = pd.ExcelFile('location/test.xlsx').parse('Sheet1') #you could add index_col=0 if there's an index
x=[]
x.append(df['name_of_col'])

Vous pouvez ensuite simplement écrire les nouvelles colonnes extraites dans un nouveau fichier Excel avec pandas df.to_Excel()

1
Deusdeorum

Le moyen le plus simple d'obtenir toutes les valeurs d'une colonne à l'aide de xlrd est la méthode de feuille de calcul col_values():

x = []
for value in sheet.col_values(8):
    if isinstance(value, float):
        x.append(value)

(Notez que si vous voulez la colonne H, vous devez utiliser 7, car les index commencent à 0).

Incidemment, vous pouvez utilisez col() pour obtenir la cellule objets dans une colonne:

x = []
for cell in sheet.col(8):
    if isinstance(cell.value, float):
        x.append(cell.value)

Le meilleur endroit pour trouver ce matériel est le tutorial officiel (qui sert de référence décente pour xlrd, xlwt et xlutils). Vous pouvez bien sûr aussi consulter le documentation et le code source.

0
John Y

XLRD est bon, mais dans ce cas, vous pourriez trouver Pandas bon car il a des routines pour sélectionner les colonnes en utilisant un opérateur '[]'

Code de travail complet pour votre contexte serait

import pandas as pd
file_location = "file_name.xlsx"
sheet = pd.read_Excel(file_location)
print(x['column name of col 9'])
0
Rahul

Je recommanderais de le faire comme:

import openpyxl
fname = 'file.xlsx'
wb = openpyxl.load_workbook(fname)
sheet = wb.get_sheet_by_name('sheet-name')
for rowOfCellObjects in sheet['C5':'C7']:
  for cellObj in rowOfCellObjects:
    print(cellObj.coordinate, cellObj.value)

Résultat:
C5 70.82
C6 84.82
C7 96.82

Remarque: nomfichier fait référence au fichier Excel, get_sheet_by_name ('nomfichier') désigne la feuille désirée et dans feuille ['C5': 'C7'] les plages sont mentionnées pour les colonnes.

Consultez le lien link pour plus de détails. Segment de code pris d'ici aussi.

0
Irfanullah