excel - 使用 Python 3.5 解析所有 Excel 公式的最快方法

标签 excel python-3.x pandas openpyxl

作为更大的测试集的一部分,我需要提取上传的 Excel 工作簿中的所有公式。然后,我需要将每个公式解析为其各自的范围引用,并将这些引用转储到一个简单的数据库中。例如,如果单元格 A1 具有公式 =B1 + C1,那么我的数据库会将 B1 和 C1 记录为引用单元格。

目前,我使用 openpyxl 一次读取一个公式,然后解析它们。这对于较小的工作簿来说很好,但对于大型工作簿来说可能会非常慢。感觉完全没有效率。

pandas 或类似模块可以更快地提取 Excel 公式吗?或者是否有一种比一次读取一个单元格更好的方法来提取所有工作簿公式?

如有任何建议,我们将不胜感激。

最佳答案

“更快地提取公式”是什么意思?它们与每个单元格一起存储,因此您必须逐个单元格地进行操作。在解析方面,openpyxl 包含一个您可能会觉得有用的标记器。理论上,这将允许您直接读取工作表 XML 文件,并且仅解析其中包含公式的节点。但是,您还必须处理某些应用程序使用的“共享公式”。 openpyxl 自动将此类公式转换为每个单元格的公式。

Pandas 内部依赖 xlrd 来读取文件,因此将内容导入 Pandas 的 ETL 不会比直接使用工作表对象更快。

关于excel - 使用 Python 3.5 解析所有 Excel 公式的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40117180/

相关文章:

python - 为什么 Python 数据类型在 Python 提示符中表现得像这样?

python - Django 1.9 和 Python 3.4,支持 MySQL (Fedora)

python - python 中的一切都是对象,但为什么不将关键字作为对象呢?

python - 当我写入 CSV 时,如何隐藏 pandas to_datetime NaT?

c# - 如何使用 C# 在 Excel 图表中添加虚线网格?

excel - 基于匹配行填充 Excel 列的问题

python - 将两个多索引数据帧与不同但相似的索引和列相乘

python - 通过轴号访问 pandas 轴

excel - 如何使用 vba 和另一个工作簿仅对空单元格应用 vlookup

excel - 控制Excel时间格式输入/输出