web-dev-qa-db-ja.com

特定の列のすべての行を繰り返し処理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
16
Daniel Dahms

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 
_
21
bernie

列 'C'(バージョン2.4.7)を繰り返し処理できないのはなぜですか?

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

これもできます。

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

これにより、行(セルではなく)を繰り返し処理し、行の列Cから値を取得して印刷するだけです。

3
Sirsmorgasboard