python xlwt尝试覆盖现有工作表而不是创建新工作表

时间:2016-06-16 16:33:05

标签: python debugging exception xls xlwt

我有一个带GUI的简单应用程序,它接受许多预设,对它们运行一些测试,并将结果保存到Excel工作表。我的问题是,每次我更改预设并按下按钮时,程序会尝试覆盖在上一次测试中创建的数据,而不是像我想要的那样创建一个新的工作表。这是一些代码。

data_book = xlwt.Workbook( encoding = "utf-8" )

def TEST():
    ### Irrelevant code that does a few calculations ###



    # Prepare data storage

    #data_book = xlwt.Workbook( encoding = "utf-8" ) commented out, same code outside of function 

    sheet = data_book.add_sheet( str( loc ) + "N"+ str( N ) + "d" + str( dis ) ) #names the sheet using values from UI
    sheet.write( 0, 0, "Title" ) #title the sheet
    for i in range( 10 ): #small number for debugging
        for a2 in A2:
            sheet.write( i+1, 3, a2 )
            sheet.write( i+1, 2, eng.test( wav_arr[ i ], A1, a2, N ) ) 
            sheet.write( i+1, 1, txt_arr[ i ] ) 
            sheet.write( i+1, 0, dt.now() ) 
    # Save sheet to workbook       
    data_book.save( "test"+str( d.today() )+".xls" )
    print "data saved. Test complete."
    clear( master_arr )

# this is the button, calls the test when pressed
b = Button( master, text = "Test!", command = lambda: TEST() )
b.pack()

我不知道如何克服这个问题。正如您所看到的,我尝试在TEST()函数中移动data_book的创建,但这并没有帮助。也许在覆盖异常上升时显式创建新工作表的try-except块?但我认为单击按钮时我已经明确创建了一个新工作表。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。对于任何感兴趣的人,请查看sheet.write()函数周围的嵌套for循环。请注意,索引的设置方式是,命令该函数为数组A2中的每个值写入相同的单元格。这会导致异常,因为程序会尝试覆盖单元格。

相关问题