Фон: Я пытаюсь добавить защиту в мой процесс открытия файлов Win32 Excel Dispatch / Excel при работе на облачной платформе, поскольку они иногда взламывают sh во время процесса и блокируют мои файлы Excel для будущий доступ. По сути, я пытаюсь достичь той же цели, что и последний блок кода (ниже) с защитой atexit () вокруг него
Проблемы: объявленные экземпляры отправки excel внутри новую функцию, содержащую atexit (), нельзя использовать в качестве глобального экземпляра для открытия следующих двух книг.
Любая помощь будет оценена! Заранее спасибо!
#declare file folder paths
folder = xxxxx\xxxxx\xxxxxx\xxx
to_File = os.path.join(folder,'hello.xlsx')
refresh_File = os.path.join(folder,'hello2.xlsx')
#create safeguard procedures
def safeguard_quit(launch_name):
launch_name.quit()
def safeguard_close(wb)
wb.close()
#Dispatch Excel with atexit() safeguard
def safeguard_launch(launch_name = 'exl'):
launch_name = win32.DispatchEx('Excel.Application')
launch_name.DisplayAlerts = False
launch_name.Visible = False #don't actually show up on the screen
launch_name.AskToUpdateLinks = False
atexit.register(safeguard_quit,launch_name)
return launch_name
#Open workbook with atexit() safeguard
def open_wb(name,address):
name = exl.Workbooks.Open(address)
atexit.register(safeguard_close,name)
return name
#Dispatch Excel and Open two workbooks
safeguard_launch()
open_wb(datawb, to_File)
open_wb(openwb, refresh_File)
#Basically I am trying to achieve below lines with atexit() safeguard added
exl = win32.DispatchEx('Excel.Application')
exl.DisplayAlerts = False
exl.Visible = False #don't actually show up on the screen
exl.AskToUpdateLinks = False
datawb = exl.Workbooks.Open(to_File)
openwb = exl.Workbooks.Open(refresh_File)
datawb.close()
openwb.close()