我有一个带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块?但我认为单击按钮时我已经明确创建了一个新工作表。感谢您的帮助。
答案 0 :(得分:0)
我解决了这个问题。对于任何感兴趣的人,请查看sheet.write()函数周围的嵌套for循环。请注意,索引的设置方式是,命令该函数为数组A2中的每个值写入相同的单元格。这会导致异常,因为程序会尝试覆盖单元格。