1

我正在尝试使用 Python 2.7 win32com 模块通过 OpenOffice 打开现有的 .xls 文档。以下脚本通过解释器完美运行:

from win32com import client
import time
import string

def pathnameToUrl( cPathname):
    """Convert a Windows or Linux pathname into an OOo URL."""
    if len( cPathname ) > 1:
        if cPathname[1:2] == ":":
            cPathname = "/" + cPathname[0] + "|" + cPathname[2:]
    cPathname = string.replace( cPathname, "\\", "/" )
    cPathname = "file://" + cPathname
    return cPathname

def PropertyValueArray(num):
    '''Creates an openoffice property value array'''
    l = []
    for x in range(num):
        _p = manager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
        _p.Name = ''
        _p.Value = ''
        l.append(_p)
    return l

wbcpath = r"C:\myexcelfile.xls"
manager = client.DispatchEx("com.sun.star.ServiceManager")
desktop = manager.CreateInstance("com.sun.star.frame.Desktop")
manager._FlagAsMethod("Bridge_GetStruct")
manager._FlagAsMethod("Bridge_GetValueObject")
p = PropertyValueArray(1)
p[0].Name = 'Hidden'  # doc should run hidden
p[0].Value = True  # doc should run hidden
doc = desktop.loadComponentFromURL(pathnameToUrl(wbcpath), "_blank", 0, p)
doc.store()
time.sleep(5)
doc.dispose()

当我尝试在 Windows Server Standard 2007 SP2 上的 Windows 任务计划程序下安排此操作时,如果收到以下错误:

Traceback (most recent call last):
  File "D:\report_polygon_count.py", line 216, in <module>
    manager = client.DispatchEx("com.sun.star.ServiceManager")
  File "C:\Python27\ArcGIS10.1\lib\site-packages\win32com\client\__init__.py", line 113, in DispatchEx
    dispatch = pythoncom.CoCreateInstanceEx(clsid, None, clsctx, serverInfo, (pythoncom.IID_IDispatch,))[0]
com_error: (-2146959355, 'Server execution failed', None, None)

我确信问题是应用程序想要打开一个窗口并且它开始被拒绝,因为没有用户登录。我试图以隐藏的方式运行它以避免这个问题。有没有办法解决这个问题或者它是否过于雄心勃勃?

4

0 回答 0