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

标签 python csv libreoffice

我正在尝试使用命令行程序将工作表(总共四张)从 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/

相关文章:

python - GAE 在不使用 CSV 的情况下将数据加载到数据存储中

python - 使用 pandas 从 CSV 中读取十进制表示形式的 float

java - 如何通过UNO更改文档名称?

linux - 将 .XLS 转换为 CSV

python - 使用 Python 在一个 .txt 文件中搜索单词或短语列表(并显示上下文)

python - 如何在Python 3项目中使用Python 2包?

python - Django 反向访问器错误

python - 使用 pandas 查找每日平均值

excel - 停止 Excel 日期解析

datetime - LibreOffice Calc 日期时间快捷方式插入