2017-09-04 10 views
2

こんにちは、私はPythonには新しく、仕事を楽にするためにいくつかのコードを試していました。そこでここでは、Excelファイルの終わりに達したとき、つまり、私は行[「ディーラー」]がNULLの場合、whileループを打破しようとしています私のコードPythonでexcelファイルの最後に到達するとwhileループが終了する

counter = 0 
while True: 

    row_values = worksheet.row_slice(counter+1,start_colx=0, end_colx=4) 

    row['Dealer'] = int(row_values[0].value) 
    row['Name'] = str(row_values[1].value) 
    row['City'] = str(row_values[2].value) 

    counter += 1 

    if not row['Dealer']: 
     break 

です。しかし、それは何とか働くようには思われません。 IndexError:リストインデックスが範囲外のままであることを続けます。助けていただければ幸いです。おかげ

こんにちは、私は以下の次に私のコードを編集した:

counter = 0 
    while True: 
    row_values = worksheet.row_slice(counter+1,start_colx=0, end_colx=30) 
    row['gg'] = worksheet.cell_value(1+counter,1).strip() 
    if not row['gg']: 
     break 


    row['Dealer'] = int(row_values[0].value) 
    row['Name'] = str(row_values[1].value) 
    row['City'] = str(row_values[2].value) 
    counter += 1 

しかし、エラーは同じです!ヘルプは高く評価されるだろう。

+0

を使用しているとどこ 'row'が初期化されたPythonのモジュールの[編集]あなたの質問やショー? – stovfl

+0

xlrdモジュールを使用しています – Shubzumt

答えて

0

Question: break the while loop when row['Dealer'] is null, that is when the end of excel file is reached.

あなたは、例えば、worksheet.nrowsを使用して行の終わりを取得することができます:

import xlrd 
book = xlrd.open_workbook("myfile.xls") 
sh = book.sheet_by_index(0) 
print("Sheetname:{0} Rows:{1} Columns:{2}". 
    format(sh.name, sh.nrows, sh.ncols)) 

# Iterate all Rows 
row_value = {} 
for rx in range(sh.nrows): 
    print(sh.row(rx)) 
    row_value['Dealer'] = sh.cell_value(rowx=rx, colx=0) 
    row_value['Name'] = sh.cell_value(rowx=rx, colx=1) 
    row_value['City'] = sh.cell_value(rowx=rx, colx=2) 

    # Break before end of Rows at first Empty Cell 
    if row_value['Dealer'] == '': 
     break 
+0

解決策のためのおかげで私はまだ私がなぜwhileループを壊すことができなかったのか疑問に思っていました! – Shubzumt

+0

@ Shubzumt:セルが空でないか、ブランクか印刷可能な文字がないかどうかを確認してください。 'sh.nrows'の後のセルは考慮されません! – stovfl

1

pandasライブラリはExcelでの作業に最適です。

pandasをpipでインストールします。

pip install pandas 

(Excelファイルでの作業に必要)xlrdをインストールします。

​​

ここから、次のExcelスプレッドシートを読むことができます。

import pandas as pd 
df = pd.read_excel('your_excel.xlsx') 

dfがDataFrameオブジェクトになりました。利用可能なパンダツールを使用してデータを分析および変換することができます。 read_excel()の完全なドキュメント

+0

実際にxlrdをインストールする必要はありません。これはパンダピップが付属しています... – anki

関連する問題