python win32com 调度失败,出现 'CrystalRuntime.Application'(64位问题)

0 投票
1 回答
1950 浏览
提问于 2025-04-17 08:26

这里的主要信息如下:

  • 操作系统是 Windows Server 2008 64位
  • 使用的 Python 版本是 64位的 Python26
  • 安装了 Visual Studio 2008(团队版),它包含了 Crystal Reports(有32位和64位的运行时)

我遇到的问题是,当调用 Dispatch('CrystalRuntime.Application') 这段代码时,它会失败,而在之前的32位操作系统上,这段代码是可以正常工作的。

出现的错误是:

(-2147221164, 'Class not registered', None, None)

我花了好几个小时在各种可能的原因上寻找解决办法,但都没有找到头绪……

我甚至在 'Crystal Reports ActiveX Designer Run Time Library' 上运行了 makepy.py,这个库包含了我想要创建的 com 接口,但结果还是失败了。

我知道 Crystal 已经正确安装,因为它运行得很好,而且我也能看到 com 类已经正确注册。

我完全卡住了,需要帮助,像往常一样,希望 Stack 能再次救我一命……

如果有任何想法,请记住我并不是一个有经验的 Python 程序员……

import os
import sys
import re
import time
from win32com.client import Dispatch
import pythoncom

def main():

    try:
        app = Dispatch('CrystalRuntime.Application')
        print app
    except pythoncom.com_error, e:
        print "(crystal reports not installed?): '%s'" % e
        return 0

    print 'Success!!!'


if __name__ == '__main__':
    main()

1 个回答

0

当我用Python 2.6和Excel一起工作时,我发现这个写法效果更好。

Excel_App = win32com.client.gencache.EnsureDispatch('Excel.Application')

也许可以把它改成适合水晶报表的格式。

App= win32com.client.gencache.EnsureDispatch('CrystalRuntime.Application')

撰写回答