tomcat/CGI и python3 не могут использовать win32com для открытия файла Excel

У меня есть сценарий PY3, который использует Win32COM для создания экземпляра нового экземпляра Excel и попытки открыть существующий файл .xlsx — в общем, это не удается при вызове через Tomcat/CGI в Windows:

sys.stdout.write("Content-Type: text/html\n\n")
excel = DispatchEx('Excel.Application')

dir = r'C:\temp'
s = 'test.xlsx'
sfile = os.path.join(dir, s)

try:
    wbS = excel.Workbooks.Open(sfile)
except pythoncom.com_error as error:
    print("exception details: {0}".format(error))
    exit(1)

Действие не выполняется с:

exception details: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', "Microsoft Excel cannot access the file 'C:\\temp\\test.xlsx'. There are several possible reasons:\n\n• The file name or path does not exist.\n• The file is being used by another program.\n• The workbook you are trying to save has the same name as a currently open workbook.", 'xlmain11.chm', 0, -2146827284), None)

Сбой, когда Tomcat запускается либо с правами администратора, либо с локальной учетной записью, причем оба имеют полный доступ к существующему файлу. Убедитесь, что Dispatch, Dispatch и DispatchEX не приводят к успеху. Никакое другое приложение не осуществляет доступ/блокировку файла. Запуск из cmd завершается успешно, что свидетельствует о том, что что-то потеряно на уровне CGI.

(Использование COM позволяет копировать рабочие листы между рабочими книгами и выполнять другие действия, не поддерживаемые XLSWriter и др.)


person jdavisftc    schedule 14.02.2017    source источник
comment
также - даже если .xlsx находится в иерархии веб-приложения, та же ошибка   -  person jdavisftc    schedule 14.02.2017
comment
это сделало это для всех, кто сталкивается с подобным: /вопросы/4803850/   -  person jdavisftc    schedule 15.02.2017
comment
Возможный дубликат win32com + Excel + Django + Apache = проблема   -  person chwarr    schedule 15.02.2017