39707

[code]

    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()))
    
[/code]

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

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

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


CC BY-SA 3.0
2017-11-20T05:11:44.967
39706
2017-11-20T05:34:18.163
26076
question
python
pythonのopenpyxlモジュールでcolumnsを使って配列指定はできなくなったのか


はい。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/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](https://bitbucket.org/openpyxl/openpyxl/src/ead9186ce0445b6929c1d1a4a10dbcf73ea85bf3/openpyxl/worksheet/worksheet.py?at=2.4&fileviewer=file-
view-default#worksheet.py-583)


CC BY-SA 3.0
2017-11-20T05:34:18.163
39707
2017-11-20T05:34:18.163
12274
39706
answer