Python:需要在excel上写入多条记录

时间:2017-05-25 16:42:37

标签: python excel

我正在尝试使用python将多行写入excel表。当我尝试打印下面的“记录”时,它会给出多行。请告诉我如何将所有行写入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)

由于

1 个答案:

答案 0 :(得分:0)

问题应该来自定义booksheet1的行,如果您将这些行移到整个for循环之外并将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-编辑:

根据提供的代码,根据缩进级别,它可能是一些问题之一。

  1. 您正在循环创建工作表,因此每次都会覆盖,这可以通过在开始for循环之前定义工作簿和工作表来修复。
  2. 每次循环时都会重新定义记录变量,这样每次只能存储1行,第一行(如果整个块在for循环中)或最后一行(参见下一点)。 / LI> col = row.findAll('td')
  3. 是for循环中的唯一一行,它被覆盖,只有在打印到xls文件时才存储最后一行。
  4. 上面针对i显示的代码中未定义

    sheet.write(i, col_index, item),更多的是注释而不是错误。

    如果您更新代码中的缩进,我可以提供更准确的答案。