解释Excel货币值

我正在使用Python从Excel读取货币值。 从range.Value方法返回的是一个元组,我不知道如何parsing。

例如,单元格显示为$ 548,982,但在python中,该值返回为(1,1194857614)。

我怎样才能从Excel中获得数字量,或者如何将这个元组值转换为数值?

谢谢!

尝试这个:

import struct try: import decimal except ImportError: divisor= 10000.0 else: divisor= decimal.Decimal(10000) def xl_money(i1, i2): byte8= struct.unpack(">q", struct.pack(">ii", i1, i2))[0] return byte8 / divisor >>> xl_money(1, 1194857614) Decimal("548982.491") 

在Microsoft COM资金是一个8字节的整数; 它是固定点,有4位小数(即1表示10000)。 我的函数做的是取4字节整数的元组,使用struct来做一个8字节的整数,以避免任何符号的问题,然后除以常数10000.如果可用,函数使用decimal.Decimal,否则使用浮动。

更新(基于评论):到目前为止,只有COM货币值是作为一个两个整数元组返回的,所以你可能想检查一下,但是不能保证这总是成功的。 但是,根据你使用的库和它的版本,很有可能在稍后升级之后,你将会收到decimal.Decimal s,而不是两个整数的元组了。

我用Excel 2007和VBA试了一下。 这是给予正确的价值。

1)尝试将这个值粘贴到一个新的Excel工作簿中
2)按Alt + F11。 让你到VBA编辑器。
3)按Ctrl + G。让你立即窗口。
4)在即时窗口中,键入?单元(“a1”)
这里“a1”是你粘贴值的单元格。

我怀疑这个单元具有某种价值或特性,因此可以这样解释它。

在这里发表你的观察。