我必须将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 对象中获取公式。在文档中,他们说可以获得公式的字符串版本(英文,因为没有关于存储在 Excel 文件中的函数名称翻译的信息)。他们谈论Name和Operand类中的公式(表达式),无论如何我无法理解如何通过必须包含它们的Cell类实例来获取这些类的实例。
你能推荐一个从单元格中获取公式文本的代码片段吗?