2016-04-08 16 views
2

excel .xlsx dosyalarıyla ilgilenmek için openpyxl kullanıyorum. Dosyalardaki bazı sütunlar farklı sayı türlerine sahip hücreler içerir. Number_type ve değeri, Cell nesnesinden alabilirim, ancak ,string dizesinin kolay bir yolunu bulamıyor. Belgeler ve openpyxl kaynaklarına birkaç saat ayırdım ama hiçbir şey bulamadım.Openpyxl ile hücre değeri için görüntülenen dize alın

Mesela ben ipython bu çıktıyı almak:

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 

nasıl '2%' ve u'2016\u5e741\u67081\u65e5' gibi bir dize alabilirim? Hücreler bazı özel hücre formatları olabilir, bu yüzden genel bir yol tercih ederim.

cevap

2

Herhangi bir hücrenin değeri, Excel türünün Python eşdeğeridir. openpyxl, dosya formatı için bir kütüphanedir ve Excel gibi bir uygulama değildir. Bu nedenle, yalnızca sayı biçimlerini ayarlama ve okuma, ancak bunları uygulama yeteneğini destekler. Bu, belirtilen özelliklere göre istediğiniz işlevi (printf tipi bir format oluşturmak) oluşturmak için kendi fonksiyonunuzu kolayca yazabilirsiniz.

+0

Verileri kendim biçimlendirmem gerek. MSDN'de [bu] gibi bazı özellikler buldum (https://msdn.microsoft.com/en-us/library/dd922181 (v = office.12) .aspx). Ancak, çoğunlukla, dosyalardan nasıl veri alacağımıza ve hala verilerin nasıl biçimlendirileceğine emin değilim. Bir şey mi eksik? Veya hücre verilerinin formatlanması ile ilgili ayrıntılar bu özelliklerin kapsamı dışında mı? –

+0

Biçimi herhangi bir ayrıntıda kullanmaya hiç bakmadım. Bir şeyin tarih mi yoksa saat olup olmadığını kontrol etmek için sadece sayı biçimlerini kullanırız. En iyi bahsiniz, §18.8.30 şartnamesinin ilgili kısmına bakmaktır. Bu Python'da uygun bir şey oluşturmanıza izin vermelidir. –