2016-04-08 77 views
2

我正在使用openpyxl來處理excel .xlsx文件。文件中的某些列包含不同數字類型的單元格。我可以從Cell對象中獲取number_type和value,但是找不到一個簡單的方法來獲得字符串。我花了幾個小時閱讀openpyxl的文檔和來源,但什麼都沒發現。使用openpyxl獲取單元格值的顯示字符串

例如,我得到這個輸出IPython中:

In [6]: ws['D4'].value 
Out[6]: 0.02 

In [7]: ws['D4'].data_type 
Out[7]: 'n' 

In [8]: ws['D4'].number_format 
Out[8]: '0.0%' 

In [9]: ws['D2'].number_format 
Out[9]: u'yyyy"\u5e74"m"\u6708"d"\u65e5";@' 

In [10]: ws['D2'].value 
Out[10]: 42370L 

我怎樣才能像'2%'u'2016\u5e741\u67081\u65e5'一個字符串?單元格可能是一些自定義的單元格格式,所以我更喜歡一般的方式。

回答

2

任何單元格的值都是Excel類型的Python等效值。 openpyxl是文件格式的庫,而不是像Excel這樣的應用程序。因此,它只支持設置和讀取數字格式的能力,但不適用它們。也就是說,你可以很容易地編寫你自己的函數來根據規範做你想做的事(創建一個printf類型的格式)。

+0

我看到我必須自己格式化數據。我在MSDN上發現了一些規格,例如[this](https://msdn.microsoft.com/zh-cn/library/dd922181(v = office.12).aspx)。但他們主要是關於如何從文件中檢索數據,而我仍然不確定如何格式化數據。我錯過了什麼嗎?或者有關格式化單元格數據的細節超出了這些規格的範圍? –

+0

我還沒有看過使用任何細節的格式。我們只使用數字格式來檢查是否是日期或時間。您最好的選擇是查看規範§18.8.30的相關部分。這應該允許你在Python中創建適合的東西。 –

相關問題