【问题标题】:Python storeAsUrl fails to save documentPython storeAsUrl 无法保存文档
【发布时间】:2015-09-30 14:42:48
【问题描述】:

此代码应打开一个模板并使用 storeAsUrl 保存它。它打开了我的模板,但保存失败。我不知道为什么。

import pyuno

from os.path import realpath, join
from com.sun.star.beans import PropertyValue


SAVE_PATH = '/home/user/Bureau/'
FILENAME = 'P{0:04d}.doc'
TEMPLATE_PATH = '/home/user/Bureau/'
TEMPLATE_NAME = 'bal.ott'


def convert_path_to_url(path):
    return pyuno.systemPathToFileUrl(realpath(path))


def python_bal(*args):
    bal_doc = BALDocument(1)
    bal_doc.save()


class BALDocument():

    def __init__(self, id):
        self.id = id
        self.desktop = XSCRIPTCONTEXT.getDesktop()
        template_url = convert_path_to_url(join(TEMPLATE_PATH, TEMPLATE_NAME))
        args = (PropertyValue('Hidden', 0, False, 0),)
        self.model = self.desktop.loadComponentFromURL(template_url, "_default", 0, args)
        self.filename = FILENAME.format(id)
        self.save_path = join(SAVE_PATH, self.filename)

    def save(self):
        url = convert_path_to_url(self.save_path)
        args = (PropertyValue('FilterName', 0, 'MS Word 97', 0),)
        self.model.storeAsUrl(url, args)
        self.model.dispose()

g_exportedScripts = python_bal,

这是我放在~/.config/libreoffice/4/user/Scripts/python/ 中的一个非常简单的脚本。我从一个空文档的工具栏中的按钮启动它。我无法解决这个错误:

com.sun.star.uno.RuntimeExceptionError 在模块 file:///home/bastien/.config/libreoffice/4/user/Scripts/python/bbal.py 中调用函数 python_bal (: storeAsUrl...)

我想知道这不是来自我创建self.desktop 的方式。

【问题讨论】:

    标签: python openoffice.org libreoffice uno


    【解决方案1】:

    方法名称中有一个拼写错误:storeAsURLURL 解决了这个问题。

    使用 uno 组件和 python 进行开发充满了陷阱,因为没有简单的 IDE 可以帮助您在开发时自动完成或检查代码。是的,有 XrayTools...

    【讨论】:

    • 除了 XrayTools,import loggingtry/except 块对调试很有用。
    猜你喜欢
    • 2020-01-08
    • 2020-01-09
    • 2011-05-04
    • 2020-01-03
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 2017-08-30
    相关资源
    最近更新 更多