2014-03-24 47 views
25

由于cell.value函数返回用于单元格的公式,所以我遇到了麻烦,我需要提取Excel在提供后的结果操作。如何使用python的openpyxl模块访问单元格的实际值

谢谢。


好吧,我想我已经找到了解决办法;显然要访问cell.internal值,您必须先在工作表中使用iter_rows(),这是一个“RawCell”列表。

for row in ws.iter_rows(): 

    for cell in row: 

     print cell.internal_value 

回答

4

尝试使用cell.internal_value来代替。

+0

已经尝试过..不知道的功能是不是从现在我在哪里工作,或者模块目前没有实施。我收到错误消息:AttributeError:'Cell'对象没有属性'internal_value'。 所以我想知道是否有其他方式来完成这一点。 – user3455972

+0

@ user3455972,请将您的代码发布到某个地方 –

22

从代码看起来像你使用优化阅读器:read_only=True。您可以在打开工作簿时使用data_only=True标志在提取公式及其结果之间进行切换。

internal_value是一个私有属性,用于仅引用Excel使用的(无类型)值,即。数字在1900年代表与Python形式相反的日期。自从首次提出这个问题以来,它已从图书馆中删除。

+0

这对我无效我得到一个无回报的价值 – Nikshep

+0

@Nikshep,请尝试使用2.0.5并提交错误报告,如果您仍有问题。 –

+0

@CharlieClark是的,但http://stackoverflow.com/questions/32772954/how-to-save-in-openpyxl-without-losing-formulae – Pyderman

52

像查理·克拉克已经建议你可以设置Truedata_only当您加载工作簿:

from openpyxl import load_workbook 

wb = load_workbook("file.xlsx", data_only=True) 
sh = wb["Sheet_name"] 
print(sh["x10"].value) 

祝你好运:)

+0

谢谢data_only param很酷 – soField

+0

x10是什么细胞? – Matthew

+0

'x10'表示带有字母'X'的列和带有数字10的行。 –

相关问题