2017-05-25 23 views
0

我正在嘗試使用python將多行寫入excel表單。當我嘗試打印下面的「記錄」時,它會顯示多行。請讓我知道如何將所有行寫入excel文件。以下代碼只寫入1行。Python:需要將多條記錄寫入excel

for row in table.findAll('tr', { "class" : "product-row" }): 
    col = row.findAll('td') 
    #print(col[0].a.img['src']) 
    #print(col) 

    Image = col[0].a.img['src'] 
    Name = col[1].a.text 
    Width = col[3].text 

    record = (Image,Name,Width) 

    book = xlwt.Workbook(encoding="utf-8") 
    sheet1 = book.add_sheet("Sheet 1") 

    for col_index, item in enumerate(record): 
     sheet1.write(i, col_index, item) 

    book.save("trial1.xls") 
    #print(record) 

感謝

回答

0

的問題應該是從那裏booksheet1定義的線條,如果你將這些全部的循環之外,並移動book.save外底的,它應該打印所有的條目。

book = xlwt.Workbook(encoding="utf-8") 
sheet1 = book.add_sheet("Sheet 1") 

i = 0 # define a row counter 

for row in table.findAll('tr', { "class" : "product-row" }): 
    col = row.findAll('td') 

    Image = col[0].a.img['src'] 
    Name = col[1].a.text 
    Width = col[3].text 

    record = (Image,Name,Width) 

    for col_index, item in enumerate(record): 
     sheet1.write(i, col_index, item) 
    i += 1 # <-- increment the row counter 

book.save("trial1.xls") 

PRE-EDIT:

從取決於縮進層次也可能是幾個問題之一提供的代碼。

  1. 您正在循環創建工作表,因此每次都會覆蓋,這可以通過在開始for循環前定義工作簿和工作表來解決。
  2. 記錄變量每次通過循環重新定義,每次只能存儲1行,或者是第一個(如果整個塊在for循環內)或最後一行(見下一個點)。
  3. col = row.findAll('td')是for循環中的唯一行,它正在被覆蓋,只有在打印到xls文件時才存儲最後一行。

i未在上面顯示的代碼sheet.write(i, col_index, item)中定義,更多的是註釋而非錯誤。

如果更新代碼中的縮進,我可以提供更準確的答案。

+0

謝謝!對困惑感到抱歉。我更新了代碼。請檢查。我認爲,即使我在開始創建excel時記錄正在被覆蓋。如何定義「記錄」並傳遞每行給它寫入。請告訴我。提前致謝! – Santosh

+0

發佈了一個新問題。如果可以,請看看。謝謝 – Santosh