2013-06-16 13 views
8

Używam Xlwt do pisania pliku excel. to komórki ma jakiś styl (kolor, wyrównanie, granice, ...)xlwt ustawić błąd tworzenia stylu: ponad 4094 XFs (style)

podczas korzystania XFStyle i ustawić granice i inne atr stylu, w niektórych przypadkach to zrobić błąd: Ponad 4094 XFS (style)

dlaczego? co powinienem zrobić z tym błędem?

dzięki

+1

Zobacz ten wątek: https://groups.google.com/forum/?fromgroups#!topic/python-excel/xxetAMesyEg. – alecxe

+0

Widziałem to już wcześniej, rozwiązanie wspomniane w tym łączu nie pomogło. –

Odpowiedz

14

czytam i funkcje i metody, która wywołuje podczas wykonywania śladu.

znajdę rozwiązanie:

wb = xlwt.Workbook(style_compression=2) 

zastosowanie: style_compression = 2

jego praca!

+1

UWAGA: jeśli napotkasz ten problem bez używania wielu stylów, najprawdopodobniej zrobiłeś coś złego. Nie nazywaj 'easyxf()', aby na przykład wielokrotnie opisywać jeden styl w cyklach. –

+0

Poprawna poprawka powinna polegać na ponownym użyciu stylów. Nie wierzę, że masz 4094 różnych stylów ... Poprawiłem odpowiedź poniżej, bo jest bardziej poprawna. –

+0

Działa .. dzięki –

4

Po napotkaniu ten sam problem w pętli Mam ekstrakcji opis formatu z pętli i nadal płynnie:

to nie działa:

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

ale to robi:

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

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

Tak więc, dla przyszłych pokoleń, ten, kto szuka odpowiedzi, robi coś złego w swoim kodzie.

Zasadniczo, co dzieje się z twoim kodem, to że wygenerowałeś ponad 4094 różnych stylów instancji (ważne, nie różne style, to wystarczy, jeśli utworzysz nowe instancje stylu).

W naszym przypadku mieliśmy coś takiego:

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

Gdzie formater waluty powstał nowy styl dla każdego wiersza.

To, co musieliśmy zrobić, to styl pamięci podręcznej dla każdej waluty, jeśli styl był taki sam.

Poprawną poprawką nie jest tworzenie tylu stylów!

Pozdrawiam, Mike.

Powiązane problemy