excel 使用xlsxwriter向工作簿添加多个新工作表

polhcujo  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(313)

我正在从多个EXCEL文件的不同列中提取数据,并希望使用Python 3中的xlsxwriter将结果写入新工作簿的多个工作表中。
为此,我将结果写入列表的列表中,然后尝试将每个列表的列表写入一个新的工作表中,该工作表具有新的、不同的名称。
我想写的第一张新纸是这样的:

with xlsxwriter.Workbook('C:\\Users\\###\\NewEntities.xlsx') as workbook:  #generate file xlsx
    worksheet1 = workbook.add_worksheet("PERSONS")
    for row_num, data in enumerate(pers_list_new):
        try:
            worksheet1.write_row(row_num, 0, data)
        except:
            pass

最后一个是这样的:

worksheet5 = workbook.add_worksheet("INSTITUTIONS")

    for row_num, data in enumerate(inst_list_new):
        try:
            worksheet5.write_row(row_num, 0, data)
        except:
            pass

新的EXCEL文件创建正确,但只有INSTITUTIONS列表(工作表5)在输出文件中可见。看起来xlswriter根本没有为每个列表添加新的工作表,而是覆盖了现有的工作表,以便只保留最后写入文件的工作表。由于我为新的工作表使用了不同的变量,并为它们指定了新的名称,我不知道为什么会发生这种情况。
我查看了xlswriter文档,不幸的是没有找到答案。

dgjrabp2

dgjrabp21#

下面是一个基于您的代码的工作示例:

import xlsxwriter

pers_list_new = [[1, 2, 3, 4, 5]] * 5
inst_list_new = [[1, 2, 3, 4, 5]] * 5

with xlsxwriter.Workbook('NewEntities.xlsx') as workbook:
    worksheet1 = workbook.add_worksheet("PERSONS")
    for row_num, data in enumerate(pers_list_new):
        try:
            worksheet1.write_row(row_num, 0, data)
        except:
            pass

    worksheet5 = workbook.add_worksheet("INSTITUTIONS")
    for row_num, data in enumerate(inst_list_new):
        try:
            worksheet5.write_row(row_num, 0, data)
        except:
            pass

输出,显示多个工作表:

相关问题