2012-11-09 52 views
2

可能重复:
Integers from excel files become floats?在xlrd中,我如何获得原始单元格值?

我有一个包含1984,这xlrd手柄为number型Excel电子表格,并因此给我的价值早在浮动1984.0。我想获取电子表格中显示的原始值,如字符串"1984"。我如何得到这个?

+0

afaik您可以从xls电子表格中获取格式化数据...这可能会解决您的问题...(或可能不是...) –

+2

Excel没有整数。它有一个数字类型(包含日期,整数,浮点数)和格式。格式确定数字类型的显示方式。该数字类型是一个浮点数。 –

+0

有没有什么能够阻止你在Python中将类型从float转换为int? –

回答

-1

使用字符串格式化:

"%d" % mynumber 
>>> "%d" % 1984.0 
'1984' 
0

唯一一种数量是浮动。附加到单元格的格式确定它是代表日期,小数还是整数。查看格式字符串,并希望它能让你辨别数字的显示方式。

1

如果cell.ctype == xlrd.XL_CELL_NUMBER

然后Excel是1984年存储为float,你将需要转换为字符串在python

在Excel

= “1984”将一个字符串 “1984年将是一个字符串,请注意,”不显示 1984年是#

2

所以在Excel内部,即1984年存储为十进制数,所以1984.0是正确的。您可以更改数字格式以将其显示为1984.00或其他任何内容。

那么你问如何查询单元格格式来告诉数字格式不是小数?如果是这样你可能会考虑使用formatting_info = open_workbook的True参数

片= open_workbook( 'types.xls',formatting_info =真 ).sheet_by_index(0)

你有没有碰到过python- excel.pdf文件来自http://www.python-excel.org/? 这是学习使用xlrd和xlwt的相当不错的教程。不幸的是,他们说:

我们已经看到open_workbook有一个参数来从Excel文件中加载格式化信息。完成此操作后,所有格式化信息都可用,但提供的详细信息超出了本教程的范围。

相关问题