我需要将一个算法从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(...)方法返回的单元格对象中获取公式。在文档中,他们说可以获取公式(英文版本,因为Excel文件中没有存储函数名称翻译信息)。它们谈论了Name和Operand类中的公式(表达式),但是我不知道如何通过必须包含它们的Cell类实例来获取这些类的实例。你能提供一个代码片段,从单元格中获取公式文本吗?