У меня есть проблема с открытием документа Excel в веб-приложении, работающем под Apache (mod_wsgi)/Windows 2008 Server (нет проблем, когда приложение работает на сервере разработчика django - один поток).
Мой код:
def my_view(request):
import pythoncom
from win32com.client import DispatchEx
pythoncom.CoInitializeEx(pythoncom.COINIT_MULTITHREADED)
xl = win32com.client.dynamic.Dispatch('Excel.Application')
xl.DisplayAlerts = False
xl.Visible = 0
doc = xl.Workbooks.Open("C:\\path\\to\\file.xlsx")
doc.Saved = True
...
wb.Close(SaveChanges=0)
xl.Quit()
pythoncom.CoUninitialize()
Сообщение об ошибке:
(-2147352567, 'Исключение произошло.', (0, u'Microsoft Office Excel', u"Microsoft Office Excel не может получить доступ к файлу 'C:\path\to \file.xlsx'. Возможных причин несколько: файл имя или путь не существуют. Файл используется другой программой. Книга, которую вы пытаетесь сохранить, имеет то же имя, что и открытая в данный момент книга.", u'C:\Program Files (x86)\Microsoft Office\Office12 \\1033\XLMAIN11.CHM', 0, -2146827284), нет)
Я знаю, что проблема локализована где-то в многопоточности, но где? Я использую pythoncom.CoInitializeEx(pythoncom.COINIT_MULTITHREADED). Может смена сервера решит проблему?
Библиотеки: Django 1.2, Apache 2.2 (mod_wsgi), win32com (последняя версия)
Я надеюсь, что кто-нибудь может мне помочь.
Спасибо! С уважением.