2013-06-16 13 views
8

Bir excel dosyası yazmak için Xlwt kullanıyorum. fazla 4094 XFS'in (stilleri)xlwt set stili yapma hatası: 4094'den fazla XF (stil)

: Bu i XFStyle kullanmak ve sınırları belirlenen ve stil attr diğer bazı durumlarda bu hatayı yaparken hücreleri biraz stil (renk, hizalama, sınırları, ...)

sahiptir var

neden? Bu hata ile ne yapmalıyım?

sayesinde

+1

Bu konuya bir bakın: https://groups.google.com/forum/?fromgroups#!topic/python-excel/xxetAMesyEg. – alecxe

+0

Bunu daha önce de görmüştüm, bu linkte sözü edilen çözüm yardımcı olmadı. –

cevap

14

okumak ve yürütülmesi sırasında aramaları işlevleri ve yöntemleri iz.

i bulmak çözüm:

wb = xlwt.Workbook(style_compression=2) 

kullanım: style_compression = 2

onun iş!

bu işe yaramadı:

for ... : 
    ws. row(row_index).write(col_index, value, easyxf('pattern: pattern solid, fore_colour yellow; align: wrap 1')) 

ancak bunu yapar: Ben döngüden formatının açıklamasını çıkarılan ve o sorunsuz bir şekilde devam çevrimi içindeki aynı sorunla karşılaşmış üzerine

+1

NOT: Bu sorunu birçok stil kullanmadan karşı karşıya bırakırsanız, büyük ihtimalle yanlış bir şey yaptınız demektir. Örneğin, döngülerdeki art arda tek bir stil tanımlamak için 'easyxf() 'yi çağırmayın. –

+0

Stilleri yeniden düzeltmek için doğru düzeltme yapılmalıdır. 4094 farklı stilin olduğuna inanmıyorum ... Aşağıya cevap verdim, çünkü daha geçerli. –

+0

Çalışıyor .. teşekkürler –

4

ostyle = easyxf('pattern: pattern solid, fore_colour yellow; align: wrap 1') 

for .... : 
    ws.row(row_index).write(col_index, value,ostyle) 
2

Yani, gelecek kuşaklar için, aradığınız her cevap için, kodunuzda yanlış bir şeyler yaparsınız.

Temel olarak, kodunuzda ne olduğu, 4094 farklı stil örneğinden oluşturduğunuzdur (Önemli, farklı stiller değil, yeni stil örnekleri oluşturursanız yeterlidir). para biçimlendirici her satır için yeni bir stil oluşturulmuş

for i, row in enumerate(rows): 
    workbook.write(i, 0, row, currency_formatter(row)) 

: Bizim durumumuzda

biz böyle bir şey vardı.

Yapmamız gereken, stil aynıysa, her bir para birimi için stili önbelleğe almaktı.

Doğru düzeltme, çok fazla stil oluşturmak değil!

Şerefe, Mike.