如何从命令行 Python 脚本将所有工作表保存在 LibreOffice Calc 电子表格中

Posted

技术标签:

【中文标题】如何从命令行 Python 脚本将所有工作表保存在 LibreOffice Calc 电子表格中【英文标题】:How can I save ALL sheets in a LibreOffice Calc Spreadsheet from a command-line Python script 【发布时间】:2013-12-21 02:43:41 【问题描述】:

我正在尝试使用命令行程序从 LibreOffice ODS 电子表格文件中将工作表(总共四个)导出为 CSV。 我正在使用 https://github.com/mirkonasato/pyodconverter 基本上是 PyODConverter.py。 我面临的问题是,将 /all/ 四张工作表保存在文件中(目前的方法是将它们保存在每个工作表的单独文件中)。 免责声明:我对 Python 编程还没有过分自信。无论如何,在前面提到的 python 脚本中,在转换函数的末尾,我添加了这个:

尝试: oSheets = 文档.Sheets 对于我在范围内(oSheets.Count): sheet = oSheets.getByIndex(i) document.CurrentController.setActiveSheet(sheet) outputUrl = self._toFileUrl( sheet.Name + ".csv" ) 打印工作表。名称 + " " + outputUrl document.storeToURL(outputUrl, self._toProperties(storeProperties)) 最后: 文档关闭(真)

但是,这样做是将当前活动的工作表保存四次。奇怪的是,这个片段确实正确地“访问”了所有工作表(它们的名称是连续报告的),但是在保存它们时,总是保存同一张工作表。所以我最终得到了四个相同的 CSV 文件。 预期的结果是如此回避,以至于我开始认为它无法完成。 (关于运行环境的旁注:我有一个 LibreOffice 监听器正在运行,所以一切都准备好了,脚本确实可以运行,只是结果不如预期)。 感谢您提供任何见解。

【问题讨论】:

【参考方案1】:

这里没有所有代码,但如果你使用 pyodconverter 作为框架,问题可能出在下面一行:

     loadProperties =  "Hidden": True 

当设置了 Hidden 属性时,setActiveSheet 方法不起作用。在不将 Hidden 设置为 true 的情况下试一试。

【讨论】:

以上是关于如何从命令行 Python 脚本将所有工作表保存在 LibreOffice Calc 电子表格中的主要内容,如果未能解决你的问题,请参考以下文章

Python:从命令行运行小型多行脚本

Sed 从命令行工作,但不在 Python 脚本中

如何在命令行里运行python脚本

为什么我的Python脚本将Postgres表的所有行设置为相同的值?

如何在命令行里运行python脚本

如何将参数从命令行传递到 python 脚本以读取和更新 json 文件中存在的某些键的值