使用Iron Python,我首先需要确定excel文件是否已经打开,然后再打开。如果未打开,则将其打开。问题:当我尝试打开工作簿(如果已经打开而不是尝试失败)时,在我的try语句中,它会完成它,并提示用户在excel中保存/取消打开的文件。如果excel文件已经打开,我不希望提示用户。
我使用Marshal Interopt库访问打开的文件,效果很好
UserExcelFile = os.path.join(userdirectory, 'podi.xlsx')
try:
workbook = excel.Workbooks.Open(UserExcelFile)
except:
print "Looks like it was already open"
return
workbook = excel.ActiveWorkbook
ws = excel.ActiveSheet
如果文件已经打开,“ workbook = excel.ActiveWorkbook”可以完美地编辑已打开的excel文件。
答案 0 :(得分:0)
我认为您的tryexcept语句不会在这里捕获异常。即使下面的行已经打开,它也会再次打开该文件。
workbook = excel.Workbooks.Open(UserExcelFile)
您应该检查文件是否已经自己打开。有关如何完成此操作的建议,请参见以下堆栈:Python: Open Excel Workbook using Win32 COM Api
答案 1 :(得分:0)
我最终使它可以在interop中检查excel文件是否已经打开,如果没有打开,它将打开并启动..如果它已经打开,那么它将开始编辑打开的工作簿。对我来说这只是大事,因为它的Iron Python和Win32 COM Api无法与Iron一起使用。
if ex.Workbooks.Open(UserExcelFile) == True:
ExtAPI.Log.WriteMessage("excel file already open")
workbook = excel.ActiveWorkbook
ex = workbook
ws = excel.ActiveSheet
else:
workbook = ex.Workbooks.Open(UserExcelFile)
ws = workbook.Worksheets[1]