【问题标题】:Openpyxl get cell value (for cells with formula, no formula, or datetime)Openpyxl 获取单元格值(对于有公式、无公式或日期时间的单元格)
【发布时间】:2020-07-31 18:56:14
【问题描述】:

我有一个电子表格,其中的单元格包含不带公式的文本、带有公式的单元格以及格式为 datetime 的单元格。我需要阅读所有这三种情况的实际值。

将 Python 3 与 Openpyxl 3.0.3 结合使用。

目前,我有以下代码。使用data_only=True,正如其他关于此类问题的SO帖子所建议的那样。

workbook = load_workbook(r"path\to\my\spreadsheet.xlsx", data_only=True)
# select first available sheet
sheet = workbook.active
sheet.title

for value in sheet.iter_rows(min_row=2,
                             max_row=86,
                             min_col=1,
                             max_col=7,
                             values_only=True):
     print(value)

结果输出的 sn-p 如下所示。在此示例中,第一列很好。第三列是日期格式的,但我需要单元格的实际值(因此它们将是 26/1/2020 和 27/1/2020)。第五和第六列有公式,但我需要实际值。

(2, None, datetime.datetime(2020, 1, 26, 0, 0), None, '=SUM(D$3:D4)', '=E4/E3', None)
(3, None, datetime.datetime(2020, 1, 27, 0, 0), None, '=SUM(D$3:D5)', '=E5/E4', None)

【问题讨论】:

    标签: python datetime openpyxl


    【解决方案1】:

    第三列是日期格式,但我需要单元格的实际值(因此它们将是 26/1/2020 和 27/1/2020)
    至于格式化,有 strfomart
    python 中 datetime 模块的选项

    from datetime import datetime
    value[2].strformat("%d/%m/%Y)
    


    您能否首先验证是否导入了值而不是公式,就像它已经完成 here
    print(sheet["a1"].value)
    


    编辑 我创建了一个包含三列的 Excel 测试文件

    奇怪的是,它会在你的 for 循环中返回正确的输出。
    输出

    (1, 5, 6)
    (2, 7, 9)
    (3, 9, 12)
    (4, 11, 15)
    

    我找到了以下评论 (source)

    FWIW,如 openpyxl.load_workbook() 中所记录,您的值 打开带有 data_only=True 的工作簿时得到的是“存储的值 Excel 上次读取工作表的时间”。这依赖于缓存功能 .xls[x/m/...] 文件(我到处都可以找到相关文档 微软除外)。 – 用户948581

    也许尝试打开文件检查公式是否正确计算(显示为单元格中的值),然后保存文件并确保它已关闭。

    【讨论】:

    • 带有公式的单元格呢?目前它返回输入的公式,而不是单元格的结果值。
    • 我尝试验证这些值是否按照您的建议导入,但它给出了语法错误,没有解释。
    • 你可以试试循环value.value 吗?
    • 它给出了一个错误:'tuple' object as no attribute 'value'
    • 更新了答案。对于我创建的模型示例来说,这真的很奇怪,它工作得很好。顺便说一句,我刚刚验证我在python 3.8上使用与openpyxl 3.0.3 相同的版本@
    猜你喜欢
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    相关资源
    最近更新 更多