У меня возникла проблема с открытием документа Excel в веб-приложении , работающего под Apache (mod_wsgi)/Windows 2008 Server (нет проблемы при запуске приложения на сервере разработчиков django - один нить).win32com + Excel + Django + Apache = проблема
Мой код: сообщение
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», и" Microsoft Office Excel не может получить доступ к file 'C: \ path \ to \ file.xlsx'. Существует несколько возможных причин. Имя файла или путь не существует. Файл используется другой программой. В рабочей книге, которую вы пытаетесь сохранить, есть . то же имя, что и в настоящее время открытая книга . ", u'C: \ Progra m Файлы (x86) \ Microsoft Office \ Office12 \ \ 1033 \ XLMAIN11.CHM ', 0, -2146827284), None)
Я знаю, что проблема локализована где-то в потоковом режиме, но где? Я использую pythoncom.CoInitializeEx (pythoncom.COINIT_MULTITHREADED). Возможно, изменение сервера решит проблему?
Libs: Django 1.2, Apache 2.2 (mod_wsgi), win32com (последний)
Я надеюсь, что кто-то может мне помочь.
Thank you, Отношения.
К сожалению, я не могу. Мне нужно управлять многими макросами и выполнять другие тяжелые операции Excel. – meme
В таком случае, будет ли опробованное решение? Имейте отдельный процесс, который ждет запросов на чтение файлов Excel и обрабатывает их в основном потоке (GUI). –
Я пробовал. В этом случае вы должны вызвать этот выделенный процесс из процесса apache, и результат будет таким же: / – meme