电子表格到python字典的转换
我正在使用python,我想读取一个*.ods文件并将其转换为python字典 该键将是第一列值,该值将是第二列值电子表格到python字典的转换,python,ods,Python,Ods,我正在使用python,我想读取一个*.ods文件并将其转换为python字典 该键将是第一列值,该值将是第二列值 我怎么做?我使用了xlrd,但它不读取*.ods文件。能否先将.ods转换为csv文件?然后,使用Python解析CSV非常容易。检查。Linux杂志上有一篇关于如何用Python阅读ods的文章。 Ods文件是一个包含xml文件的JUZIP文件。您可以通过解析xml文件来读取所有单元格 一些可用选项: :“以ods格式读取、操作和写入数据的包装器库。”可通过以下方式安装:pip
我怎么做?我使用了
xlrd
,但它不读取*.ods文件。能否先将.ods转换为csv文件?然后,使用Python解析CSV非常容易。检查。Linux杂志上有一篇关于如何用Python阅读ods的文章。
Ods文件是一个包含xml文件的JUZIP文件。您可以通过解析xml文件来读取所有单元格
一些可用选项:
- :“以ods格式读取、操作和写入数据的包装器库。”可通过以下方式安装:
。我个人推荐这个软件包,因为我已经使用过它,并且正在积极维护它pip install pyexcel ods
- :“…用于以ISO标准OpenDocument格式分析、转换和创建文件的工具集合。” 该项目自2007年底以来一直未更新。它看起来被遗弃了
- :“用于创建/操作OpenDocumentFormat文件的Python包。”可通过
安装。有关此软件包的严重问题,请参阅下面评论中的警告pip install ezodf
libreoffice --without-x --convert-to csv filename.ods
有关详细信息,请查看libreoffice--help(或openoffice--help)。这也可以包装在os.system()、SUBSPROCESS.*()等中(注意:在Windows上使用-convert to。)另外注意:您不能已经在运行Libre/Open/Star office的任何实例,包括quickstarter
更新:以前版本的LibreOffice使用的是无头而不是无x。下面链接中的这种方法对于我将*.ods文件读取/加载到python数据帧中非常有效。 您可以选择按加载
图纸索引
或
图纸名称
从该项目中查看我的解决方案:
您可能首先需要安装这些依赖项:ezodf、lxml
和pandas
,然后才能继续
pip install pandas_ods_reader
from pandas_ods_reader import read_ods
然后:
根据索引加载板材(基于索引1)
根据图纸名称加载图纸
sheet_name = "sales_year_1"
df = read_ods(filepath, sheet_name)
完成。或@marcog:这条评论应该是一个答案。@Space我刚刚放弃了一个可能性,我没有读太多,所以我觉得这不是一个完整的答案。@marcog:
ezodf
有承诺,但最近才开始(版本0.2.0 alpha),除了打开和保存文件外,还没有处理.ods文件,当然,他还不知道表格、行和单元格。另外,它只是Python3.x。谢谢,但正如我所知,将ods转换为cvs的唯一方法是开放式office服务。但是我不想用它。我可以直接把它转换成字典吗?“how to read ods in python”只总结了可能感兴趣的标记的子集,例如,它提到了
,但对其奇怪的内容没有任何线索,也没有告诉您必须非常仔细地记录单元格所属的(行、列)内容(它没有记录在单元格属性中!!)。正确解析XML文件不是回答这样一个问题时应该愉快地建议的事情。您自己尝试过吗?是否希望我脱机向您发送测试文件?注意:--自动操作需要无头。(我很想知道如何指定单个工作表。)如果您甚至不想链接X11库,下面介绍如何进行无头构建:在Libreoffice 4.4及更高版本中,-headless现在是--without-x.(windows:-without-x)注意:最后一个包()包含一个严重的错误,导致它以静默方式返回错误的单元格值:。感谢您让我注意到它。说pyexcel-ods3使用ezodf读取、处理和写入ods格式的数据
sheet_idx = 1
df = read_ods(filepath, sheet_idx)
sheet_name = "sales_year_1"
df = read_ods(filepath, sheet_name)