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?
Vous pouvez obtenir les valeurs de la 8ème colonne comme ceci:
for rownum in range(sheet.nrows):
x.append(sheet.cell(rownum, 7))
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()
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.
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'])
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.