使用 Python 3.5 解析所有 Excel 公式的最快方法
Fastest way to parse all Excel formulas using Python 3.5
作为一组更大的测试的一部分,我需要提取上传的 Excel 工作簿中的所有公式。然后我需要将每个公式解析为其各自的范围引用并将这些引用转储到一个简单的数据库中。例如,如果单元格 A1 具有公式 =B1 + C1,那么我的数据库会将 B1 和 C1 记录为引用单元格。
目前我使用 openpyxl 一次读取一个公式,然后解析它们。这对于较小的工作簿来说很好,但对于大型工作簿来说可能会非常慢。感觉完全没效率。
pandas 或类似模块能否更快地提取 Excel 公式?或者是否有比一次读取一个单元格更好的方法来提取所有工作簿公式?
如有任何建议,我们将不胜感激。
不知道 python,但解决问题的快速方法是:
- 使用特殊单元格将R1C1模式的所有公式放入数组中
- 输入 collection/dictionary 以获得唯一值
- 然后解析唯一值
"extracting the formulae faster" 是什么意思?它们存储在每个单元格中,因此您必须逐个单元格。在解析方面,openpyxl 包含一个您可能会觉得有用的标记器。理论上,这将允许您直接读取工作表 XML 文件,并且只解析其中包含公式的节点。但是,您还必须处理某些应用程序使用的 "shared formulae"。 openpyxl 自动将此类公式转换为每个单元格的公式。
内部 Pandas 依靠 xlrd 读取文件,因此将内容放入 Pandas 的 ETL 不会比直接使用工作表对象更快。
作为一组更大的测试的一部分,我需要提取上传的 Excel 工作簿中的所有公式。然后我需要将每个公式解析为其各自的范围引用并将这些引用转储到一个简单的数据库中。例如,如果单元格 A1 具有公式 =B1 + C1,那么我的数据库会将 B1 和 C1 记录为引用单元格。
目前我使用 openpyxl 一次读取一个公式,然后解析它们。这对于较小的工作簿来说很好,但对于大型工作簿来说可能会非常慢。感觉完全没效率。
pandas 或类似模块能否更快地提取 Excel 公式?或者是否有比一次读取一个单元格更好的方法来提取所有工作簿公式?
如有任何建议,我们将不胜感激。
不知道 python,但解决问题的快速方法是:
- 使用特殊单元格将R1C1模式的所有公式放入数组中
- 输入 collection/dictionary 以获得唯一值
- 然后解析唯一值
"extracting the formulae faster" 是什么意思?它们存储在每个单元格中,因此您必须逐个单元格。在解析方面,openpyxl 包含一个您可能会觉得有用的标记器。理论上,这将允许您直接读取工作表 XML 文件,并且只解析其中包含公式的节点。但是,您还必须处理某些应用程序使用的 "shared formulae"。 openpyxl 自动将此类公式转换为每个单元格的公式。
内部 Pandas 依靠 xlrd 读取文件,因此将内容放入 Pandas 的 ETL 不会比直接使用工作表对象更快。