使用python xlrd从Excel单元格获取公式

问题描述 投票:24回答:6

我必须将算法从Excel工作表移植到python代码,但我必须从Excel文件中对算法进行反向工程

Excel工作表非常复杂,它包含许多单元格,在这些单元格中有引用其他单元格的公式(也可以包含公式或常数)。

[我的想法是使用python脚本分析工作表以构建一种单元格之间的依存关系表,即:

A1取决于B4,C5,E7公式:“ = sqrt(B4)+ C5 * E7”A2取决于B5,C6公式:“ = sin(B5)* C6”...

xlrd python模块允许读取XLS工作簿,但此刻我可以访问单元格的[[value,而不是formula。]]例如,使用以下代码,我可以简单地获取单元格的值:

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文件中没有存储有关函数名称转换的信息)。他们谈论NameOperand类中的公式(表达式),无论如何,我无法理解如何通过必须包含它们的Cell类实例来获取这些类的实例。您能否建议一个从单元格获取公式文本的代码段?

我必须将算法从Excel工作表移植到python代码,但必须对Excel文件中的算法进行反向工程。 Excel工作表非常复杂,它包含许多单元格,其中...

python excel formula xls xlrd
6个回答
21
投票
[[Dis] claimer:我是xlrd的作者/维护者。

12
投票

Update


5
投票
所以我知道这是一篇非常古老的文章,但是我找到了一种不错的方法,可以从工作簿的所有工作表中获取公式,并使新创建的工作簿保留所有格式。

2
投票
看来现在不可能用xlrd做你想做的事。您可以查看this post,以详细了解为什么难以实现所需的功能。

0
投票
是的!使用win32com,它对我有用。

-1
投票
我知道这篇文章有些晚了,但是这里没有提到一个建议。从工作表中剪切所有条目,然后使用特殊粘贴(OpenOffice)进行粘贴。这会将公式转换为数字,因此不需要其他编程,这对于小型工作簿而言是一个合理的解决方案。
© www.soinside.com 2019 - 2024. All rights reserved.