首页 文章

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

提问于
浏览
4

我正在尝试使用命令行程序将LibreOffice ODS电子表格文件中的工作表(总共四个)导出为CSV .
我正在https://github.com/mirkonasato/pyodconverter处理基本上是PyODConverter.py的东西 .

我遇到的问题是,保存/全部/四个文件中的工作表(当前的方法是将它们保存在每个工作表的单独文件中) .

免责声明:我对Python编程感到过于自信(尚未) . 无论如何,在前面提到的python脚本中,在convert函数的最后,我添加了这个:

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监听器,所以所有设置都要去,而且脚本确实起作用,只有结果不符合预期) .
感谢您的任何见解 .

1 回答

  • 1

    你没有这里的所有代码但如果你使用pyodconverter作为框架,问题可能就是这一行:

    loadProperties = { "Hidden": True }
    

    设置隐藏属性时,setActiveSheet方法不起作用 . 尝试不设置隐藏为真 .

相关问题