在 Python 中构建电子表格引擎的冒险之旅

主要观点:

  • 介绍电子表格是一个有趣的工具,可存储和结构化数据并包含计算公式,作者决定用 Python 构建电子表格引擎。
  • 阐述电子表格可表示为图,通过语法将公式转化为树并处理依赖关系,使用拓扑排序确定计算顺序,编写评估逻辑来计算单元格值。
  • 不断添加公式和功能,如基本数学运算、范围查询等,遇到很多挑战但也在不断学习和探索。

关键信息:

  • 数据结构中单元格键为字母加数字,值为实际值或公式。
  • 用 Lark 库写语法和访问者来处理公式和依赖关系。
  • 拓扑排序用于计算单元格评估顺序,避免循环引用。
  • 利用 Lark 的 Transformer 类进行公式评估。
  • 实现了基本数学运算公式,如加法、减法等。

重要细节:

  • 示例数据结构展示了单元格及其值的关系。
  • 访问者类GetDependencies用于获取依赖项。
  • 拓扑排序示例中展示了单元格及其依赖项的表示和排序结果。
  • 递归函数用于获取单元格值并处理依赖关系。
  • 公式中value可以是单元格引用、数字或其他数学表达式,OPERATOR为运算符函数。
  • 实现了范围查询功能,但还需添加多列范围查询及处理相关依赖计算。
  • 代码开源在GitHub
阅读 14
0 条评论