如何使用 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 模块访问单元格的实际值的主要内容,如果未能解决你的问题,请参考以下文章

python3操作Excel openpyxl模块的使用

python操作excel----openpyxl模块

Python 自动化办公之 Excel 模块 — openpyxl 的基本使用!

python模块之openpyxl

python模块之openpyxl扩展

python 模块openpyxl读excel文件