我正在研究python,我想读取* .ods文件并将其转换为python字典。
键将是第一列值,值将是第二列值。
我该怎么办?我使用了xlrd
但它没有读取* .ods文件。
答案 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文件以读取所有单元格。
答案 5 :(得分:0)
下面的链接中的这种方法非常适合我将* .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)
完成。