如何从命令行 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 电子表格中的主要内容,如果未能解决你的问题,请参考以下文章