Je n'arrive pas à comprendre comment parcourir toutes les lignes d'une colonne spécifiée avec openpyxl.
Je veux imprimer toutes les valeurs de cellule pour toutes les lignes de la colonne "C"
En ce moment j'ai:
from openpyxl import workbook
path = 'C:/workbook.xlsx'
wb = load_workbook(filename = path)
ws=wb.get_sheet_by_name('Sheet3')
for row in ws.iter_rows():
for cell in row:
if column == 'C':
print cell.value
Vous pouvez spécifier une plage à parcourir avec ws.iter_rows()
:
import openpyxl
wb = openpyxl.load_workbook('C:/workbook.xlsx')
ws = wb.get_sheet_by_name('Sheet3')
for row in ws.iter_rows('C{}:C{}'.format(ws.min_row,ws.max_row)):
for cell in row:
print cell.value
Edit: par Charlie Clark, vous pouvez alternativement utiliser ws.get_squared_range()
:
# ...
ws.get_squared_range(min_col=1, min_row=1, max_col=1, max_row=10)
# ...
Éditer 2: vous souhaitez que les valeurs des cellules soient répertoriées dans une liste par votre commentaire:
import openpyxl
wb = openpyxl.load_workbook('c:/_twd/2016-06-23_xlrd_xlwt/input.xlsx')
ws = wb.get_sheet_by_name('Sheet1')
mylist = []
for row in ws.iter_rows('A{}:A{}'.format(ws.min_row,ws.max_row)):
for cell in row:
mylist.append(cell.value)
print mylist
Pourquoi ne pouvez-vous pas simplement parcourir la colonne 'C' (version 2.4.7):
for cell in ws['C']:
print cell.value
Vous pouvez aussi faire ça.
for row in ws.iter_rows():
print(row[2].value)
Avec cela, vous parcourez toujours les lignes (mais pas les cellules) et ne tirez que les valeurs de la colonne C dans la ligne à imprimer.