Apache(mod_wsgi)/ Windows 2008 Serverで実行されているWebアプリケーションでExcelドキュメントを開く際に問題があります(アプリケーションがdjango開発者サーバーで実行されている場合は問題ありません-1スレッド)。
私のコード:
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 OfficeExcelはファイル'C:\ path \ to\file.xlsx'にアクセスできません。いくつかの理由が考えられます。ファイル名前またはパスが存在しません。ファイルは別のプログラムによって使用されています。保存しようとしているワークブックは、現在開いているワークブックと同じ名前です。 "、u'C:\ Program Files(x86)\ Microsoft Office \ Office12 \ \ 1033 \ XLMAIN11.CHM'、0、-2146827284)、なし)
問題がスレッドのどこかに限定されていることは知っていますが、どこにありますか?pythoncom.CoInitializeEx(pythoncom.COINIT_MULTITHREADED)を使用しています。たぶんサーバーを変更することで問題は解決しますか?
Libs:Django 1.2、Apache 2.2(mod_wsgi)、win32com(最新)
誰かが私を助けてくれることを願っています。
ありがとう、よろしく。