2016-07-27 31 views
5

openpyxlで指定された列のすべての行を反復処理する方法を理解できません。私はコラム「C」のすべての行のセル値のすべてを印刷したい特定の列のすべての行を繰り返す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 

編集:チャーリー・クラークごとに、あなたは、交互に使用することができ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 
関連する問題