2012-11-09 80 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文件中加載格式化信息。完成此操作後,所有格式化信息都可用,但提供的詳細信息超出了本教程的範圍。

相關問題