Итерация по всем строкам в определенном столбце openpyxl

Я не могу понять, как выполнять итерацию по всем строкам в указанном столбце с помощью openpyxl.

Я хочу напечатать все значения ячеек для всех строк в столбце "C"

Сейчас у меня есть:

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

Ответ 1

Вы можете указать диапазон для повторения с помощью 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

Изменить: за Чарли Кларка вы можете попеременно использовать ws.get_squared_range():

# ...
    ws.get_squared_range(min_col=1, min_row=1, max_col=1, max_row=10)
# ...

Изменить 2: за ваш комментарий вы хотите, чтобы значения ячейки в списке:

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 

Ответ 2

Почему вы не можете просто перебирать столбец "C" (версия 2.4.7):

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

Ответ 3

Вы также можете сделать это.

for row in ws.iter_rows():
   print(row[2].value)

При этом вы по-прежнему перебираете строки (но не ячейки) и извлекаете только значения из столбца C в строке для печати.