【问题标题】:How to access the real value of a cell using the openpyxl module for python如何使用 python 的 openpyxl 模块访问单元格的实际值
【发布时间】: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

【问题讨论】:

    标签: python cell openpyxl


    【解决方案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,如果仍有问题,请提交错误报告。
    【解决方案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'。所以我想知道是否还有其他方法可以做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    相关资源
    最近更新 更多