2016-10-05 3 views
1

でもう機能していないopenpyxl作品:反復がopenpyxlこのコードのバージョン2.3.5を使用して新しいバージョン> 2.3.5

from openpyxl import load_workbook 

excel_file = load_workbook(excel_file_path,read_only=True) 

sheet = excel_file["Sheet1"] 

    mylist = [] 
    for row in sheet: 
     for cell in row: 
      mylist.append((cell.value, cell.row, cell.column)) 

私はこれをしなかったので、私は私の大きなExcelファイルを処理することができますもっと早く。 2.4.x以降の新しいバージョンでは、これはもう機能しません。最初の "for-loop"はすぐに破損し、バージョンでは何が変わっていますか?またはopenpyxlの最新バージョンでどうやって同じことをすることができますか?

+0

「休憩」とはなんですか?完全なトレースバックを提供してください。 –

+0

つまり、最初のループを実行しても、次のコード行でジャンプします。最初の "for-loop"はまだ入力されていません。 – friggler

+0

これは、 'read_only'を' True'に設定するたびに新しいバージョンで発生します。それ以外の場合は問題ありません。 – Abdou

答えて

0

これは、ワークブックをロードするときにパラメータがTrueに設定されている場合にのみ発生しているようです。 私の問題を回避するには、行インデックスなどをループに値のrangeを作成するsheetmax_row属性を使用することであった:

from openpyxl import load_workbook 

excel_file = load_workbook(excel_file_path,read_only=True) 
sheet = excel_file["Sheet1"] 

mylist = [] 
row_num = sheet.max_row 

for row_index in range(1,row_num): 
    for cell in sheet[row_index]: 
     mylist.append((cell.value, cell.row, cell.column)) 

うまくいけば@CharlieClarkこの上にいくつかの光を当てることができます。しかし、その間に、私はこれが助けになることを願っています。

+0

ありがとうiveこれを試してみましたこれは確かに新しいバージョンで動作する回避策ですが、何が変更されたのかを知ることは素晴らしいでしょうし、上記のコードは最新のバージョン – friggler

関連する問題