xlsxwriter 的 For 循环迭代问题

For-loop iteration issue with xlsxwriter

我正在尝试使用 xlsxwriter 构建 for 循环以逐行写入我的列表。我的代码块;

driver.get("file:///C:/HTML/new.html")

workbook = xlsxwriter.Workbook("test.xlsx")
worksheet = workbook.add_worksheet("PC list")

header = driver.find_elements_by_xpath("/html/body/table/tbody/tr[1]/th")
headers = []
for h in header:
    headers.append(h.text)
worksheet.write_row("A1", headers) # writes 1st row without any issue

trs = driver.find_elements_by_xpath("//table//tr")
for tr in trs[1:]:
    row=[td.text for td in tr.find_elements_by_tag_name("td")]
    worksheet.write_row("A2", row) # It overwrites each time
workbook.close()

每次都覆盖,所以我只看到最后一个Excel;

但我想看到这样的;

我想“A2”每次都必须递增,但如何递增?

worksheet.write_row("A2", row) # It overwrites each time

xlsxwriter 可以吗?有人可以建议该怎么做吗?非常感谢

您可以更新要写入的行号,如下所示:

for n, tr in enumerate(trs[1:]):
    row=[td.text for td in tr.find_elements_by_tag_name("td")]
    n_row = 2 + n
    worksheet.write_row(f"A{n_row}", row) # It overwrites each time

函数 enumerate returns 有两个值:一个数字和您正在迭代的值。 我想剩下的就很简单了。

使用包含行和列的 write_row 的替代形式要容易得多。

可以看到here

所以像这样:

for row_num, tr in enumerate(trs[1:]):
    row_data=[td.text for td in tr.find_elements_by_tag_name("td")]
    worksheet.write_row(row_num, 0, row_data)

您需要将目标行从 A2 更改为 A3,然后再更改为 A4,以此类推,同时迭代并将这些行写入文件...在您的代码中稍微更新您的 for 循环:

for n, tr in enumerate(trs[1:]):
    row=[td.text for td in tr.find_elements_by_tag_name("td")]
    worksheet.write_row("A{}".format(2+n), row)