Python win32com通过Task Scheduler打开OpenOffice Calc(.xls)电子表格

时间:2013-06-17 08:41:45

标签: python scheduler win32com

我正在尝试使用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)

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

0 个答案:

没有答案