我正在尝试使用命令行程序将工作表(总共四张)从 LibreOffice ODS 电子表格文件导出为 CSV。
我正在使用基本上是 PyODConverter.py 的 https://github.com/mirkonasato/pyodconverter .
我面临的问题是,将/所有/四张纸保存在文件中(当前的方法是将它们保存在每张纸的单独文件中)。
免责声明:我(目前)对使用 Python 编程并没有太大的信心。不管怎样,在前面提到的 python 脚本中,在转换函数的末尾,我添加了这个:
try: oSheets = document.Sheets for i in range( oSheets.Count ): sheet = oSheets.getByIndex( i ) document.CurrentController.setActiveSheet( sheet ) outputUrl = self._toFileUrl( sheet.Name + ".csv" ) print sheet.Name + " " + outputUrl document.storeToURL( outputUrl, self._toProperties( storeProperties ) ) finally: document.close(True)
但是,这样做是将当前事件的工作表保存四次。奇怪的是,这个片段确实正确地“访问”了所有工作表(它们的名字是连续报告的),但是在保存它们时,总是保存同一张工作表。所以我最终得到了四个相同的 CSV 文件。
预期的结果如此含糊不清,以至于我开始认为它无法完成。
(关于操作环境的旁注:我有一个 LibreOffice 监听器正在运行,所以一切都已设置好,脚本实际上可以运行,只是结果不如预期)。
感谢您提供任何见解。
最佳答案
您没有此处的所有代码,但如果您使用 pyodconverter 作为框架,问题可能出在以下行:
loadProperties = { "Hidden": True }
设置 Hidden 属性后,setActiveSheet 方法不起作用。在不将 Hidden 设置为 true 的情况下尝试。
关于python - 如何从命令行 Python 脚本将所有工作表保存在 LibreOffice Calc 电子表格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20714857/