我在 Apache(mod_wsgi)/Windows 2008 Server 下运行的 Web 应用程序中打开 Excel 文档时遇到了一些问题(当应用程序在 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, 'Exception occurred.', (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(最新)
我希望有人能帮助我。
谢谢,问候。