2016-07-27 8 views
5

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

Я хочу напечатать все значения ячеек для всех строк в колонке «С»

Прямо сейчас у меня есть:

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 
+0

Что такое 'ws'? Как вы использовали 'openpyxl'? Просьба дать более подробную информацию о цели, которую вы пытаетесь достичь, или каждый ответ будет основан на предположениях. – danielhadar

ответ

8

Вы можете указать диапазон перебрать с 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: за Чарли Кларк вы можете поочередно использовать ws.get_squared_range():

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

Edit 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 
+0

безупречный! Это точно то, что я искал, огромное спасибо! –

+0

Добро пожаловать. Пожалуйста, подумайте о принятии этого ответа с помощью зеленой галочки. – bernie

+1

'ws.get_squared_range()' позволит вам использовать числовые границы. В режиме только для чтения 'ws.max_row' может быть недоступен. openpyxl 2.4 имеет лучший API здесь. –

4

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

for cell in ws['C']: 
    print cell.value 
Смежные вопросы