【问题标题】:Python: how to import Excel cell's displayed (formatted) value instead of real valuePython:如何导入 Excel 单元格的显示(格式化)值而不是实际值
【发布时间】:2020-03-05 02:37:32
【问题描述】:

例如,一个单元格的实际值为1.96。单元格采用舍入格式,以便在 Excel 中显示 2。 另一个例子,一个单元格的值为5,但它被格式化为显示货币,所以$5。 可以有任何类型的格式。所以我无法提前知道我在寻找什么格式。

如何使用 Python 导入这些显示的值?我研究过 Pandas 和 openpyxl,但找不到方法。

我可以通过创建自定义 VBA 模块来半手动完成。跟随 Duncan O'Donnell 的回答(最后一个):https://superuser.com/questions/678934/how-can-i-get-the-displayed-value-of-a-cell-in-ms-excel-for-text-that-was-conv

但我需要完全自动化并在 Python 中完成。任何帮助表示赞赏,谢谢!

【问题讨论】:

    标签: python excel pandas openpyxl


    【解决方案1】:

    Openpyxl 有一个名为number_format 的功能可以派上用场。我基本上玩了dir 的输出来达到这个目的。

     #let's say we have a value in cell C2 which is 1.96 but formatted to 2.0
     print(ws['C2'].number_format)
     
     #   #
    

    # 表示它被格式化为整数。

    # Create a conditional:
    
    if fmt=="#":
        r = round(ws['C2'].value)
    print(r)
    
    2.0
    

    这有点小技巧,但它应该对您的用例有所帮助。

    对于美元部分,我将向您推荐这个stack overflow post,因为我相信它很好地抓住了您的用例。

    【讨论】:

    • 谢谢,这很有帮助。我已经更新了我的问题。我正在处理的项目可以有任意数量的随机格式。所以我无法提前知道我在寻找什么样的格式并像这样捕获它们。
    • 这有点难。真的不能打电话给这个……但是 number_format 应该给你一个指导。我相信,如果您稍微尝试一下,您可以获得一些见解。
    【解决方案2】:

    我能够用 VBA 解决这个问题......所以我想 Python 没有简单的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      相关资源
      最近更新 更多