Je veux imprimer toutes les données (toutes les lignes) d'une colonne spécifique en python en utilisant openpyxl
Je travaille de cette façon;
from openpyxl import load_workbook
workbook = load_workbook('----------/dataset.xlsx')
sheet = workbook.active
for i in sheet:
print(sheet.cell(row=i, column=2).value)
Mais ça donne
si ligne <1 ou colonne <1: TypeError: types non commandables: Tuple () <int ()
Parce que je suis dans row=i
. Si j'utilise sheet.cell(row=4, column=2).value
, il affiche la valeur de la cellule. Mais comment puis-je parcourir tous les documents?
Modifier 1
Certaines recherches ont montré que les données peuvent être obtenues en utilisant le nom de la feuille. Le Sheet 1
existe dans le fichier .xlsx
mais ses données ne sont pas en cours d'impression. Un problème dans ce code?
workbook = load_workbook('---------------/dataset.xlsx')
print(workbook.get_sheet_names())
worksheet =workbook.get_sheet_by_name('Sheet1')
c=2
for i in worksheet:
d = worksheet.cell(row=c, column=2)
if(d.value is None):
return
else:
print(d.value)
c=c+1
Lire la Documentation OpenPyXL
Itération sur tous les worksheets
dans un workbook
, par exemple:
for n, sheet in enumerate(wb.worksheets):
print('Sheet Index:[{}], Title:{}'.format(n, sheet.title))
Sortie:
Sheet Index:[0], Title: Sheet Sheet Index:[1], Title: Sheet1 Sheet Index:[2], Title: Sheet2
Itération sur toutes les rows
et columns
dans one Feuille de calcul:
worksheet = workbook.get_sheet_by_name('Sheet')
for row_cells in worksheet.iter_rows():
for cell in row_cells:
print('%s: cell.value=%s' % (cell, cell.value) )
Sortie:
<Cell Sheet.A1>: cell.value=²234
<Cell Sheet.B1>: cell.value=12.5
<Cell Sheet.C1>: cell.value=C1
<Cell Sheet.D1>: cell.value=D1
<Cell Sheet.A2>: cell.value=1234
<Cell Sheet.B2>: cell.value=8.2
<Cell Sheet.C2>: cell.value=C2
<Cell Sheet.D2>: cell.value=D2
Itération sur tous les columns
de unrow
, par exemple row==2
:
for row_cells in worksheet.iter_rows(min_row=2, max_row=2):
for cell in row_cells:
print('%s: cell.value=%s' % (cell, cell.value) )
Sortie:
<Cell Sheet.A2>: cell.value=1234
<Cell Sheet.B2>: cell.value=8.2
<Cell Sheet.C2>: cell.value=C2
<Cell Sheet.D2>: cell.value=D2
Itération sur allrows
, uniquement column
2:
for col_cells in worksheet.iter_cols(min_col=2, max_col=2):
for cell in col_cells:
print('%s: cell.value=%s' % (cell, cell.value))
Sortie:
<Cell Sheet.B1>: cell.value=12.5
<Cell Sheet.B2>: cell.value=8.2
<Cell Sheet.B3>: cell.value=9.8
<Cell Sheet.B4>: cell.value=10.1
<Cell Sheet.B5>: cell.value=7.7
Testé avec Python: 3.4.2 - openpyxl: 2.4.1 - LibreOffice: 4.3.3.2
Essaye ça,
from openpyxl import load_workbook
workbook = load_workbook('----------/dataset.xlsx')
sheet = workbook.active
row_count = sheet.max_row
for i in range(row_count):
print(sheet.cell(row=i, column=2).value)