12

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

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

我该怎么做?我使用过xlrd,但它不读取 *.ods 文件。

4

6 回答 6

8

一些可用的选项:

  • pyexcel-ods:“一个以 ods 格式读取、操作和写入数据的包装库。 ”可以通过以下方式安装:pip install pyexcel-ods. 我个人推荐这个软件包,因为我已经使用过它并且正在积极维护它。

  • py-odftools:“ ...用于分析、转换和创建 ISO 标准 OpenDocument 格式文件的工具集合。 ”该项目自 2007 年底以来没有更新。它看起来已被废弃。

  • ezodf:“用于创建/操作 OpenDocumentFormat 文件的 Python 包。 ”可通过pip install ezodf. 有关此软件包的严重问题,请参阅下面的评论中的警告。

于 2015-04-07T17:14:52.520 回答
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 office 实例,包括快速入门。

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

于 2015-04-08T22:18:41.750 回答
2

您可以先将 .ODS 转换为 csv 吗?然后使用csv模块使用 Python 解析 CSV 非常简单。

于 2011-01-20T08:58:07.843 回答
2

检查py-odftools

于 2011-01-20T08:58:50.747 回答
2

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

从这个项目中窥视我的解决方案: https ://pypi.org/project/pandas-ods-reader/

您可能首先需要安装这些依赖项:ezodf,lxml并且pandas在继续之前。

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)

完毕。

于 2019-09-14T11:52:56.587 回答
0

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

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

于 2011-01-20T09:16:14.397 回答