1

我有一个 LibreOffice 电子表格 (data.ods),其中包含 30 列中大约 500 行逗号分隔值。第一行包含列标题。

Data.ods 通过脚本在一天中定期更新。然后,我在另一个电子表格 (main.ods) 中有几个指向 data.ods 中单元格的链接。

我目前正在执行以下操作:

1) 使用 Python 脚本生成 data.ods。

2) 打开 data.ods,以便 LibreOffice 对逗号分隔值进行文本导入以填充行。

3) 打开 main.ods(它会自动更新链接)。

我目前无法简单地让 main.ods 保持打开状态,因为即使在关闭 data.ods 之后,LibreOffice 似乎仍然对文件有某种锁定,并且在我完全关闭 LibreOffice 之前不允许我的脚本编辑 data.ods(要求我关闭 main.ods)。

我想做以下事情:

1) 打开 main.ods。

2) 通过脚本生成 data.ods。

3) 使用 Edit...Links...Update Values 将更新的值导入 main.ods。

4) 让 main.ods 保持打开状态。

5)通过脚本生成新的data.ods。

6) 使用 Edit...Links...Update Values 将更新的值导入 main.ods。

7) 必要时重复。

4

2 回答 2

0

您可能知道有一些方法可以通过 Python 脚本处理 Open/Libre Offie。它甚至附带了自己的 Python 解释器。

问题是关于如何做到这一点的文档很糟糕——但其中一项功能就是让一个外部运行的 Python 脚本来访问在界面上打开的文档(如电子表格),并为其添加值。

它很慢,但效果很好——因为你说的只有几百行,所以速度无关紧要。

现在,让我尝试查找相关文档并为您提供有关从何处开始的链接: http ://www.openoffice.org/udk/python/python-bridge.html#modes

如果您将示例代码粘贴到 Python 交互式提示中(需要是随 LibreOffice 安装的 Python),您将能够使用 Python 内省可用的方法和属性,dir并找出方法调用以从脚本编辑单元格内容.

于 2012-04-26T02:56:58.463 回答
0

正如 jsbueno 所提到的,您可以使用 uno 模块在文档打开时(并且它不会阻止手动编辑文档)在文档上运行 Python。

同意该文档目前是垃圾。我正在尝试在www.documenthacker.com / http://documenthacker.wordpress.com上做一些事情,但专注于 Writer。然而,这些程序是相似的,您可能会发现打开文档、导航文档等的方法很有用——一旦您开始使用 Python 编程 LibreOffice/OpenOffice,解决下一个问题就变得相当容易。

在互联网上,Java 中的示例通常比 Python 中的示例多,不幸的是,如何在示例之间进行翻译只是半清楚的(在我的文档的待办事项列表中)。好消息是 Python 方式通常要简单得多。

于 2013-03-05T21:12:44.540 回答