私のクエリは、解析スクリプトの一部である関数と関係しています。私は、Excelで一致する値に対応する列番号を見つけるためにPython関数を記述しようとしています。 Excelはopenpyxlを使用してオンザフライで作成されており、3列目から1列目に4列の各ヘッダーがマージされています。後続の関数では、一致するヘッダーに対応する列に追加するコンテンツを解析しています。 (追加情報:私が解析しているコンテンツは、爆発+出力です。ヒット、ギャップ、スパン、アイデンティティのサブカラムを含む各列のヒット名を含むサマリースプレッドシートを作成しようとしています。長さ。Openpyxl max_rowとmax_columnが間違って大きな数字を報告する
私は最初にxlrdのために同様の関数を書いていました。しかし、openpyxl用に書き直そうとすると、max_row関数とmax_col関数が実際に存在するよりも多くの行と列を誤って返すことが分かりました。たとえば、このパイロット入力には20行ありますが、82として報告します。 空の行&列を手動で選択して右クリックして削除しました。このフォーラムの別の場所でアドバイスしました。これはエラーを変更しませんでした。
def find_column_number(x):
col = 0
print "maxrow = ", hrsh.max_row
print "maxcol = ", hrsh.max_column
for rowz in range(hrsh.max_row):
print "now the row is ", rowz
if(rowz > 0):
pass
for colz in range(hrsh.max_column):
print "now the column is ", colz
name = (hrsh.cell(row=rowz,column=colz).value)
if(name == x):
col = colz
return col
max_rowとmax_colの問題は、私はここでの提案を適用し、ここでhttps://bitbucket.org/openpyxl/openpyxl/issues/514/cell-max_row-reports-higher-than-actual議論されてきました。しかし、max_rowはまだ間違っています。
for row in reversed(hrsh.rows):
values = [cell.value for cell in row]
if any(values):
print("last row with data is {0}".format(row[0].row))
maxrow = row[0].row
私はその後https://www.reddit.com/r/learnpython/comments/3prmun/openpyxl_loop_through_and_find_value_of_the/での提案を試みたが、列の値を取得しようとしました。もう一度、スクリプトは空の列を考慮に入れ、実際に存在する列よりも高い列を報告します。
for currentRow in hrsh.rows:
for currentCell in currentRow:
print(currentCell.value)
このエラーを解決したり、目的を達成するための別の方法を提案してもらえますか?
私は今、この提案を試みたが、それはまだ同じ大きな膨張した番号に最大行を示しています。このコメントから手がかりを得て、私はhttps://stackoverflow.com/questions/40547394/checking-for-empty-cells-with-openpyxlで提案されたものを試して、Noneと空文字列の両方を探しましたが、私はまだ同じ結果を得ました大きい膨らんだ数字。 – bioinfoSeeker
*大きい数字*は何を意味しますか? 'max_row'はローカル変数になり、ワークシートのディメンションに直接影響しません。 –