2017-11-28 12 views
0

私は各列の値を印刷するExcelシートをループしようとしています。次に、次の行に移動し、列の値をファイルの最後まで印刷します。私のデータはPythonループシート印刷セルの値をExcelに

Name   email    desc   date 
name1   email1    desc1   date1 
name2   email2    desc2   date2 
name3   email3    desc3   date3 



wb = load_workbook('example.xlsx') 
sheet = wb.get_sheet_by_name('Sheet1') 
row_count = sheet.max_row -1 
column_count = sheet.max_column 
i = 1 
while (i <= row_count): 
for item in sheet.iter_cols(): 
    #for row in sheet.iter_cols(): 
    first_value = item[i] 
    print (first_value.value) 
    i+=1 

のように見えます

私は、範囲外のエラーやタプルインデックスの取得、そしてそれはまた、正しいデータを印刷していません。範囲エラーのうちの前に、上記のコードで

first_value = item[i] 
IndexError: tuple index out of range 

データが同じ行にないので、私は明らかに間違っている出力として NAME1、EMAIL2、desc3を得る

+0

が重複する可能性を望むように変数(https://stackoverflow.com/questions/22169325/read-excel-file-in-python) – thatrockbottomprogrammer

+0

は*あなたの**完全なを教えてください*コードとcom pleteエラーメッセージ。 – monamona

答えて

1

あなたがいるという事実name1email2desc3などの値を印刷すると、列と行の両方が増加していることがわかります。これは、ネストされたforループ内で、外側のループではなく、iを増やしているためです。

whileループで増加させてください。例えば、このような何か:

import csv 
with open(<YOUR_CSV_FILE_NAME>) as csvfile: 
    reader = csv.DictReader(csvfile) 
    for row in reader: 
     print(row) 

ここからは、「で遊ぶことができます。

while (i <= row_count): 
for item in sheet.iter_cols(): 
    #for row in sheet.iter_cols(): 
    first_value = item[i] 
    print (first_value.value) 
i+=1 
1

これを解決する最も簡単な方法は、実行した.csv

としてファイルを保存することです行」あなたは[Pythonで読むExcelファイル]の