电子表格到python字典转换

时间:2011-01-20 08:47:48

标签: python ods

我正在研究python,我想读取* .ods文件并将其转换为python字典。

键将是第一列值,值将是第二列值。

我该怎么办?我使用了xlrd但它没有读取* .ods文件。

6 个答案:

答案 0 :(得分:7)

一些可用选项:

  • pyexcel-ods:" 以ods格式读取,处理和写入数据的包装库。"可以通过以下方式安装:pip install pyexcel-ods。我个人推荐此套餐,因为我已经使用过它并且正在积极维护。

  • py-odftools:" ...用于分析,转换和创建ISO标准OpenDocument格式文件的工具集。" 该项目自2007年底以来一直没有更新。它看起来已经放弃了。

  • ezodf:" 用于创建/操作OpenDocumentFormat文件的Python包。"可通过pip install ezodf安装。请参阅以下评论中的警告,了解此软件包存在的严重问题。

答案 1 :(得分:3)

虽然您可以要求您的用户使用文件>另存为(您可能知道),但这可能对您的情况没有用。

使用libre / openoffice服务可能更容易。它可以在服务器上完全无头地运行,无需安装或运行X11,这将为您提供干净的本机转换。

libreoffice --without-x --convert-to csv  filename.ods

检查libreoffice --help(或openoffice --help)以获取详细信息。这也可以包装在os.system(),subprocess。*()等中。(注意:在Windows上使用-convert-to。)另请注意:您不能已经运行任何实例Libre / Open / Star办公室,包括快速入门。

更新:使用LibreOffice的早期版本 - 无头而不是--without-x。

答案 2 :(得分:2)

您可以先将.ODS转换为csv吗?然后使用csv模块很容易使用Python解析CSV。

答案 3 :(得分:2)

检查py-odftools

答案 4 :(得分:1)

Linux Journal上有一篇很棒的文章如何在python中读取ods。 Ods文件是一个包含xml文件的juz zip文件。您可以解析xml文件以读取所有单元格。

http://www.linuxjournal.com/article/9347?page=0,2

答案 5 :(得分:0)

下面的链接中的这种方法非常适合我将* .ods文件读取/加载到python数据帧中。 您可以选择加载方式 sheet indexsheet name

从此项目中寻求我的解决方案:https://pypi.org/project/pandas-ods-reader/

您可能需要先安装以下依赖项:ezodf,lxmlpandas,然后继续。

pip install pandas_ods_reader

from pandas_ods_reader import read_ods

然后:

filepath = "path/to/your/file.ods"

根据索引加载工作表(基于索引1)

sheet_idx = 1
df = read_ods(filepath, sheet_idx)

根据工作表名称加载工作表

sheet_name = "sales_year_1"

df = read_ods(filepath, sheet_name)

完成。