web-dev-qa-db-fra.com

parcourir toutes les lignes de la colonne spécifique openpyxl

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
13
Daniel Dahms

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 
18
bernie

Pourquoi ne pouvez-vous pas simplement parcourir la colonne 'C' (version 2.4.7):

for cell in ws['C']:
   print cell.value
14
Jonathan Koren

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.

0
Sirsmorgasboard