使用外部 Python 程序在 OpenOffice 上加载文档

2024-01-19

我正在尝试创建一个 python 程序(使用 pyUNO )来对 OpenOffice 计算表进行一些更改。

我之前已在“接受”模式下启动 OpenOffice,以便能够从外部程序进行连接。显然,应该很简单:

import uno
# get the uno component context from the PyUNO runtime
localContext = uno.getComponentContext()

# create the UnoUrlResolver
resolver = localContext.ServiceManager.createInstanceWithContext(
                            "com.sun.star.bridge.UnoUrlResolver", localContext)

# connect to the running office
ctx = resolver.resolve("uno:socket,host=localhost,port=2002;"
                       "urp;StarOffice.ComponentContext")
smgr = ctx.ServiceManager

# get the central desktop object
DESKTOP =smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)

#The calling it's not exactly this way, just to simplify the code
DESKTOP.loadComponentFromURL('file.ods') 

但我得到一个AttributeError当我尝试访问时loadComponentFromURL。如果我做一个dir(DESKTOP),我只看到以下属性/方法:

['ActiveFrame', 'DispatchRecorderSupplier', 'ImplementationId', 'ImplementationName',
'IsPlugged', 'PropertySetInfo', 'SupportedServiceNames', 'SuspendQuickstartVeto', 
'Title', 'Types', 'addEventListener', 'addPropertyChangeListener', 
'addVetoableChangeListener', 'dispose', 'disposing', 'getImplementationId', 
'getImplementationName', 'getPropertySetInfo', 'getPropertyValue', 
'getSupportedServiceNames', 'getTypes', 'handle', 'queryInterface', 
'removeEventListener', 'removePropertyChangeListener', 'removeVetoableChangeListener', 
'setPropertyValue', 'supportsService']

我读到有一个错误在 OpenOffice 3.0 上执行相同的操作(我使用的是 OpenOffice 3.1 而不是 Red Hat5.3)。我尝试使用所述的解决方法here http://udk.openoffice.org/python/python-bridge.html,但它们似乎不起作用。

有任何想法吗?


我已经很久没有使用 PyUNO 做过任何事情了,但是看看我上次在 06 年运行它时运行的代码,我的加载文档是这样的:

def urlify(path):
     return uno.systemPathToFileUrl(os.path.realpath(path))

desktop.loadComponentFromURL(
        urlify(tempfilename), "_blank", 0, ())

您的示例是一个简化版本,我不确定您是否有意或无意删除了额外的参数。

如果 loadComponentFromURL 不存在,则 API 已更改或存在其他问题,我已通读您的代码,看起来您正在做与我相同的事情。

我不相信桌面对象上的方法的 dir() 会有用,因为我认为有一个__getattr__用于通过请求进行代理的方法,并且您打印出的所有方法都是用于替代对象的实用程序方法com.sun.star.frame.Desktop.

我认为失败可能是因为没有名为 loadComponentFromURL 的方法恰好有 1 个参数。也许给出 4 个参数版本将导致该方法被找到并使用。这可能只是 Python 和 Java 之间的阻抗不匹配,其中 Java 具有调用签名方法重载。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用外部 Python 程序在 OpenOffice 上加载文档 的相关文章

随机推荐

  • 有没有办法在 JavaFX LineChart 中断开串联的 2 个点?

    我在 LineChart 上有四个系列 每个系列都包含一定数量的按时间划分的图表 默认情况下 LineChart 连接这些图表 它看起来很难看并且在上下文中没有任何意义 所以我想将它们分开 但保留颜色和图例 换句话说 我想要的是删除两个特定
  • Spring框架中的依赖注入和控制反转是什么?

    依赖注入 和 控制反转 经常被认为是使用 Spring 框架开发 Web 框架的主要优点 如果可能的话 有人可以用一个非常简单的术语解释它是什么吗 Spring 有助于创建松散耦合的应用程序 因为依赖注入 在 Spring 中 对象定义它们
  • C++ 自省技术,类似于 python

    C 中是否有像 Python 中那样的自省技术 例如 我想获取有关特定对象的更多信息 而不需要通过头文件或引用 cpp 引用 我是问了一个正确的问题 还是走错了方向 Update 根据以下答案 这个答案与我的问题相关 如何向 C 应用程序添
  • Blaze:{{#if}} 语句中的逻辑(Not、Or、And...)

    有没有办法在 if 语句中进行逻辑运算 我希望有这样的事情 if A B some html if 我在 blaze 中找不到有关逻辑的文档 所以我猜它不受支持 我只是想确定一下 抱歉问了一个相当愚蠢的问题 正如 Billy Bob 所建议
  • Express.js:如何获取 ip 地址并渲染视图?

    我真的认为这应该很容易 但是当我渲染一个jade模板时 我也想抓取ip地址 我的代码看起来像这样 app js app get index home index js exports home function req res res re
  • C# 中的外部 IP 地址

    在 C 中获取外部 IP 地址的最简单方法是什么 框架内没有内置的方法来执行此操作 因为很难确定外部 公共 IP 地址是什么 当然 这是假设您的 IP 在某个网关后面经过 NAT 一种方法是抓取类似的网站http www whatismyi
  • 解释错误:ISO C++ 禁止声明没有类型的“Personlist”

    我有一个类将处理我之前创建的另一个类的对象数组 效果很好 当我尝试创建列表类的对象时出现问题 这是列表类的标题 ifndef personlistH define personlistH include Person h include
  • 如何从当前月份中选择当前日期

    我想检索当月 1 30 之间的数据 我正在使用 MSACCESS Dbase 来执行此操作 下面是我正在尝试的查询 SELECT count usercategory as category count usercategory FROM
  • VS Code 扩展安全如何处理?

    我已经使用 VS Code 一年左右了 我不知道 VS Code Extension 安全性是如何处理的 我对这样的事情感到震惊 Markdown 预览增强 https marketplace visualstudio com items
  • CRA + React Leaflet:编译失败

    我刚刚开始一个全新的项目create react app并设置react leaflet正如他们的文档所建议的here https react leaflet js org docs start installation 我正在尝试使用这个
  • pyspark:自动填充隐式缺失值

    我有一个数据框 user day amount a 2 10 a 1 14 a 4 5 b 1 4 你看 最大值day是4 最小值是1 我要填0 for amount列中所有用户的所有缺失天数 因此上面的数据框将变为 user day am
  • Safari 和 iOS 上的 Html5(音频)

    我正在开发一款 Web 应用程序 但与 Apple 设备和 PC 上的 Safari 浏览器存在兼容性问题 Html5 音频标签
  • 假人的 Getters \ Setters

    我一直在尝试了解 getter 和 setter 但它没有被理解 我读过JavaScript Getter 和 Setter http ejohn org blog javascript getters and setters and 定义
  • 可靠地验证 JWS 证书链和域

    我正在 Node JS 中编写后端代码来验证来自 Google SafetyNet API 的 JWS 我很惊讶没有为此找到现成的模块 因此我开始使用可用的库来研究 JWS 的一些简单验证 首先 谷歌表示需要执行以下步骤 从 JWS 消息中
  • 如何在Windows服务器上运行html文件中的php代码?

    我已使用 htaccess 文件和以下代码AddType 应用程序 x httpd php html htm 它在本地工作正常 但当我将文件上传到服务器上时 它工作不正常 我的所有页面都有 html 扩展名 您需要添加到 PHP exe 的
  • 递归泛型类型

    是否可以在 C 中定义引用自身的泛型类型 例如 我想定义一个 Dictionary 将其类型保存为 TValue 对于层次结构 Dictionary
  • echo 输出与预期的格式化输出不同

    I m using the following formatting for echo 它应该输出粗体和下划线的文本 但不是将其设置为粗体 而是提供 更亮 的颜色变体 并将带下划线的代码 4 视为青色 从而产生浅青色文本 我在 Window
  • 为什么 Enumerator.MoveNext 在与 using 和 async-await 一起使用时不能按我的预期工作?

    我想通过一个枚举List
  • document.title 中的播放符号 (▶) 被压扁

    添加到问题为什么 的 HTML 符号在 document title 中不起作用 https stackoverflow com questions 16930905 why does the html symbol for not wor
  • 使用外部 Python 程序在 OpenOffice 上加载文档

    我正在尝试创建一个 python 程序 使用 pyUNO 来对 OpenOffice 计算表进行一些更改 我之前已在 接受 模式下启动 OpenOffice 以便能够从外部程序进行连接 显然 应该很简单 import uno get the