python xlsxwriter工作表对象重用

时间:2015-03-06 23:26:21

标签: python xlsxwriter

我编写了一些迭代平面文件的代码。在某个部分完成阅读后,我将数据放入电子表格中。然后,我返回并继续阅读下一部分的平面文件并写入新工作表......依此类推。

循环遍历python代码时,我为上面阅读的每个部分创建了一个新的工作表。在这个循环中,我创建了新的工作表:

worksheet = workbook.add_worksheet(thename)

问题是第二次循环时,python在将上面的工作表对象重新分配给新工作表时崩溃。有没有办法“关闭工作表对象”,然后重新分配它?

仅供参考:如果我不能使用相同的对象名称,在这种情况下使用“工作表”,为了处理“worksheet1”,“worksheet2”,“worksheet3”等,代码将变得非常冗长和混乱。 ......(你可能想象)

提前谢谢!

2 个答案:

答案 0 :(得分:0)

不是将变量worksheet分配给workbook.add_worksheet(thename),而是拥有一个名为worksheets的列表。通常worksheet = workbook.add_worksheet(thename)时,请执行worksheets.append(workbook.add_worksheet(thename))。然后使用worksheets[-1]访问您的最新工作表。

答案 1 :(得分:0)

  

问题是第二次循环时,python在将上面的工作表对象重新分配给新工作表时崩溃。

运行XlsxWriter程序时,Python不应该崩溃。如果是,您应该提交错误报告。

您可以通过几种不同的方式遍历工作表。例如,通过在循环中创建工作表:

import xlsxwriter

workbook = xlsxwriter.Workbook('test.xlsx')

for _ in range(4):

    worksheet = workbook.add_worksheet()

    worksheet.write('A1', 'Hello')

workbook.close()

或者通过在循环外创建工作表,然后使用worksheets()方法循环它们:

import xlsxwriter

workbook = xlsxwriter.Workbook('test.xlsx')

workbook.add_worksheet()
workbook.add_worksheet()
workbook.add_worksheet()
workbook.add_worksheet()

for worksheet in workbook.worksheets():
    worksheet.write('A1', 'Hello')

workbook.close()

您还可以将工作表存储在列表中并对其进行迭代。这基本上与worksheets()方法正在进行。