2016-07-27 63 views
5

我無法弄清楚如何使用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 
+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 

編輯:每查理·克拉克,你可以使用交替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 
+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