Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不关闭LibreOffice的情况下,通过Python脚本更新以前打开的LibreOffice spreasdsheet_Python_Csv_Libreoffice - Fatal编程技术网

在不关闭LibreOffice的情况下,通过Python脚本更新以前打开的LibreOffice spreasdsheet

在不关闭LibreOffice的情况下,通过Python脚本更新以前打开的LibreOffice spreasdsheet,python,csv,libreoffice,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保持打开状

我有一个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(需要关闭main.ods)之前不允许我的脚本编辑data.ods

我想做以下几点:

1) 打开main.ods

2) 通过脚本生成data.ods

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

4) 让main.ods打开

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

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


7) 必要时重复。

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

问题在于,关于如何操作的文档非常糟糕——但其中一个功能恰恰是让外部运行的Python脚本能够访问界面上打开的文档(如电子表格),并为其添加值

虽然速度很慢,但效果很好——因为你说的只是几百行,速度并不重要

现在,让我尝试查找相关文档,并为您提供一个从何处开始的链接:


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

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

同意文件目前是垃圾。我正试图在/上对此做些什么,但重点放在作家身上。然而,这些程序是相似的,您可能会发现打开文档、导航文档等的方法很有用——一旦您开始使用Python编程LibreOffice/OpenOffice,解决下一个问题就相当容易了


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

展示您到目前为止所拥有的,并告诉我们问题所在。否则听起来像是你要我们为你写代码!这将是愚蠢的。无论是谁处理过LibreOffice和脚本,这个问题都非常清楚。这不是需要代码,而是知道该走哪条路。谢谢,这似乎是我应该走的正确道路。如果我有任何进一步的问题,我会报告。如果基础数据电子表格是CSV,则使用文件…重新加载是一个简单的解决方案。QuiteUserName的回答我不完全清楚。经过研究,我发现这种方法非常适合这种情况。Python导出到csv,csv链接到ods文件中的一个工作表,并标记另一个工作表以从链接的工作表中绘制数据。重新加载需要被触发,有多种简单的方法可以实现。