Python 2.7: проверьте, открыт ли файл Excel в программе перед сохранением - PullRequest
0 голосов
/ 09 мая 2019

У меня есть программа на Python, которая в итоге сохраняет отчет Excel в папке.

Я использую openpyxl, и это часть скрипта, которая сохраняет файл Excel:

excelFilePath = reportsPath + "/reportFinal.xlsx"
wb.save(excelFilePath)

Проблема здесь в том, что reportFinal.xlsx уже открыт пользователем в Microsoft Excel, а затем пользователь запускает программу, чтобы сохранить тот же Excel в той же папке, после чего моя программа падает.

Очевидная причина в том, что старый файл reportFinal.xlsx нельзя заменить новым отчетом reportFinal.xlsx, если он уже открыт в Microsoft Excel.

Есть ли способ проверить в сценарии, открылся ли Excel в Microsoft Excel, чтобы пользователь мог увидеть правильную ошибку, и программа перестала работать?

1 Ответ

0 голосов
/ 09 мая 2019

Вы можете попробовать это:

def not_in_use(filename):
        try:
            os.rename(filename,filename)
            return True
        except:    
            return False
excelFilePath = reportsPath + "/reportFinal.xlsx"
if not_in_use(excelFilePath):
    wb.save(excelFilePath)
...