通过Python脚本更新以前打开的LibreOffice spreasdsheet而不关闭LibreOffice

时间:2012-04-26 00:12:21

标签: python csv libreoffice

我有一个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仍然对文件有某种锁定并且不允许我的脚本编辑data.ods直到我关闭LibreOffice一共(要求我关闭main.ods)。

我想做以下事情:

1)打开main.ods。

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

3)使用编辑...链接...更新值将更新的值导入main.ods。

4)保持main.ods打开。

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

6)使用编辑...链接...更新值将更新的值导入main.ods。

7)根据需要重复。

2 个答案:

答案 0 :(得分:0)

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

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

它很慢,但它运行正常 - 因为你只谈了几百行,速度无关紧要。

现在,让我尝试找到相关文档,并为您提供有关入门位置的链接: http://www.openoffice.org/udk/python/python-bridge.html#modes

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

答案 1 :(得分:0)

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

同意文档目前是垃圾。我正试图在www.documenthacker.com / http://documenthacker.wordpress.com做一些事情,但专注于作家。然而,这些程序是相似的,您可能会发现打开文档,导航文档等方法很有用 - 一旦您使用Python编写LibreOffice / OpenOffice,就可以轻松地解决下一个问题。

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