pythonのopenpyxlモジュールでcolumnsを使って配列指定はできなくなったのか

投稿者: Anonymous
import openpyxl, os
from openpyxl.utils import get_column_letter, column_index_from_string
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')

for row in sheet.rows:
    print(row)
print('n')

for row in sheet.iter_rows():
    print(row)    
print('n')

for col in sheet.columns:
    print(col)
print('n')

for col in sheet.iter_cols():
    print(col)
print('n')

print(type(sheet.rows))
print(type(sheet.iter_rows()))
print(type(sheet.columns))
print(type(sheet.iter_cols()))

pythonのopenpyxlについて質問です。tupleの中にcellオブジェクトが入っているというのはわかってきたのですが、「退屈なことをpythonにやらせよう」という書籍では

for cell in sheet.columns[1]とすることで、特定の列だけをforループで回すことができたようです。しかしこの構文を書くと「ジェネレータは配列はつかえないぞ」となってしまいます。

特定の列の値だけをとってくるなら他のやり方もあるみたいですが、上の構文で指定できたらいいなと思っているのですが、やはりopenpyxlの改良により、使い方も変わっているのでしょうか?

解決

はい。2.3から2.4で変わりましたね。

https://bitbucket.org/openpyxl/openpyxl/src/0691d33d8b8059eb0f76bec7634fce86c1da9643/openpyxl/worksheet/worksheet.py?at=2.3&fileviewer=file-view-default#worksheet.py-716

https://bitbucket.org/openpyxl/openpyxl/src/ead9186ce0445b6929c1d1a4a10dbcf73ea85bf3/openpyxl/worksheet/worksheet.py?at=2.4&fileviewer=file-view-default#worksheet.py-583

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *