【发布时间】:2011-06-09 02:12:45
【问题描述】:
我必须将算法从 Excel 工作表移植到 Python 代码,但我必须从 Excel 文件对算法进行逆向工程。
Excel 工作表相当复杂,它包含许多单元格,其中有引用其他单元格的公式(也可以包含公式或常数)。
我的想法是用python脚本来分析表格,建立一个单元格之间的依赖关系表,即:
A1 取决于 B4,C5,E7 公式:“=sqrt(B4)+C5*E7”
A2 取决于 B5,C6 公式:“=sin(B5)*C6”
...
xlrd python 模块允许读取 XLS 工作簿,但目前我可以访问单元格的 值,而不是 公式。
例如,使用以下代码,我可以简单地获取单元格的值:
import xlrd
#open the .xls file
xlsname="test.xls"
book = xlrd.open_workbook(xlsname)
#build a dictionary of the names->sheets of the book
sd={}
for s in book.sheets():
sd[s.name]=s
#obtain Sheet "Foglio 1" from sheet names dictionary
sheet=sd["Foglio 1"]
#print value of the cell J141
print sheet.cell(142,9)
无论如何,似乎没有办法从 .cell(...) 方法返回的 Cell 对象中获取公式。 在documentation 中,他们说可以获得公式的字符串版本(英文是因为没有关于存储在 Excel 文件中的函数名称翻译的信息)。他们谈论 Name 和 Operand 类中的公式(表达式),无论如何我无法理解如何通过 Cell 获取这些类的实例必须包含它们的类实例。
您能推荐一个从单元格中获取公式文本的代码 sn-p 吗?
【问题讨论】:
标签: python excel formula xls xlrd