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

时间:2013-12-21 02:43:41

标签: python csv libreoffice

我正在尝试使用命令行程序将LibreOffice ODS电子表格文件中的工作表(总共四个)导出为CSV。
我正在https://github.com/mirkonasato/pyodconverter处理基本上是PyODConverter.py的内容
我遇到的问题是,保存/全部/四个文件中的工作表(当前的方法是将它们保存在每个工作表的单独文件中)。

免责声明:我对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监听器正在运行,所以所有设置都已完成,并且脚本确实起作用,只有结果不符合预期)。
感谢您的任何见解。

1 个答案:

答案 0 :(得分:1)

您没有此处的所有代码,但如果您使用pyodconverter作为框架,则问题可能就是问题:

     loadProperties = { "Hidden": True }

设置隐藏属性时,setActiveSheet方法不起作用。尝试一下,不要将Hidden设置为true。