2016-07-09 5 views
1

xlsxファイルを使ってxlsxファイルを処理していますが、このxlsxファイルをread_onlyモードで開くと、最初の10行しかアクセスできないようです。私はすべてのxlsxファイルでこれが表示されません。 StopIterationをread_onlyで早くトリガーするxlsxファイルのデータについては、TrueであるがFalseではないものはありますか?スプレッドシート内のすべてのデータは、(理論的には)一様でプレーンテキストです。Python openpyxl:読み取り専用モードで別の行数を返す

これはbook2では期待通りに機能しますが、book1では以下のように動作しません。

読み取り専用モードが知られている、それが特に使用一部、ワークシートに関する正しい情報を提供するファイルを作成したアプリケーションやライブラリに依存しています:

>>> import openpyxl 
>>> a = openpyxl.load_workbook("book1.xlsx", read_only=True) 
>>> a.active.max_row 
10 
>>> a = openpyxl.load_workbook("book1.xlsx", read_only=False) 
>>> a.active.max_row 
20082 

>>> a = openpyxl.load_workbook("book2.xlsx", read_only=True) 
>>> a.active.max_row 
1069 
>>> a = openpyxl.load_workbook("book2.xlsx", read_only=False) 
>>> a.active.max_row 
1069 
+0

どのようにXLSXファイルを作成しましたか?データ/行が削除されたときに、行数がVBAで乱雑になりました。おそらくこれはここでも似ています。 –

+0

ご質問ありがとうございます。動作しないxlsxファイルはサードパーティのプログラムによって生成されたので、残念ながらそれを制御することはできません。私はそれをまったく操作しませんでした。 – sunilbeforezod

+0

ワークシートのdimensions要素に無効な値が含まれているようです。 –

答えて

1

は、ドキュメントからws.max_row = ws.max_column = Noneあなたの問題を解決します 見積もりを設定しました次元として。

一部のアプリケーションでこれが正しく設定されていません。 ws.calculate_dimension()を使用して、ワークシートの見かけ上の寸法を確認することができます。

これはあなたが間違っている知っている範囲を返す場合、A1:A1は、単にmax_rowmax_column属性を使用すると、ファイルを操作できるようにする必要がありますリセット言う:

ws.max_row = ws.max_column = None 
関連する問題