如何使用 python 的 openpyxl 模块访问单元格的实际值
Posted
技术标签:
【中文标题】如何使用 python 的 openpyxl 模块访问单元格的实际值【英文标题】:How to access the real value of a cell using the openpyxl module for python 【发布时间】:2014-05-02 00:54:55 【问题描述】:我确实遇到了麻烦,因为 cell.value 函数返回用于单元格的公式,我需要在操作后提取 Excel 提供的结果。
谢谢。
好的,我想我已经找到了解决方法;显然要访问 cell.internal 值,您必须以前在工作表中使用 iter_rows(),这是“RawCell”的列表。
for row in ws.iter_rows():
for cell in row:
print cell.internal_value
【问题讨论】:
【参考方案1】:就像 Charlie Clark 已经建议您在加载工作簿时将 data_only
设置为 True
一样:
from openpyxl import load_workbook
wb = load_workbook("file.xlsx", data_only=True)
sh = wb["Sheet_name"]
print(sh["x10"].value)
祝你好运:)
【讨论】:
'x10' 指的是带有字母 'X' 的列和编号为 10 的行。 嘿,显然sh["x10"]
是一种已弃用的方法。你得到了这些...... iter_rows() ?【参考方案2】:
从代码看来,您正在使用优化的阅读器:read_only=True
。您可以在打开工作簿时使用data_only=True
标志在提取公式及其结果之间切换。
internal_value
是一个私有属性,用于仅引用 Excel 使用的(未键入的)值,即。日期为 1900 年的数字,而不是 Python 形式。自首次提出此问题以来,它已从库中删除。
【讨论】:
这对我不起作用我得到一个 None 值作为回报 @Nikshep,请尝试 2.0.5,如果仍有问题,请提交错误报告。 @CharlieClark 是但***.com/questions/32772954/…【参考方案3】:您可以尝试以下代码。只需在下面的代码中提供您需要的行号和列号值的excel文件路径和单元格的位置。
from openpyxl import Workbook
wb = Workbook()
Dest_filename = 'excel_file_path'
ws=wb.active
print(ws.cell(row=row_number, column=column_number).value)
【讨论】:
这仍然给了我公式而不是计算值【参考方案4】:尝试改用cell.internal_value
。
【讨论】:
已经尝试过.. 不知道我工作的地方是否不存在该功能,或者该模块当前没有实现它。我收到错误消息:AttributeError:'Cell' 对象没有属性'internal_value'。所以我想知道是否还有其他方法可以做到这一点。以上是关于如何使用 python 的 openpyxl 模块访问单元格的实际值的主要内容,如果未能解决你的问题,请参考以下文章