2013-06-16 6 views
8

Ich benutze Xlwt zum Schreiben einer Excel-Datei. es ist Zellen etwas Art hat (Farbe, Ausrichtung, Ränder, ...)xlwt set style making error: Mehr als 4094 XFs (Stile)

wenn ich XFStyle verwenden und Grenzen und andere attr von Stil, in einigen Fällen ist es Fehler machen: Mehr als 4094 XFs (Arten)

warum? Was soll ich mit diesem Fehler machen?

dank

+1

Werfen Sie einen Blick auf diesen Thread: https://groups.google.com/forum/?fromgroups#!topic/python-excel/xxetAMesyEg. – alecxe

+0

Ich habe das schon einmal gesehen, die Lösung, die in diesem Link erwähnt wurde, hat nicht geholfen. –

Antwort

14

ich gelesen und Funktionen und Methoden verfolgen, die während der Ausführung aufruft.

i finden Lösung:

wb = xlwt.Workbook(style_compression=2) 

Verwendung: style_compression = 2

seine Arbeit!

+1

HINWEIS, wenn Sie dieses Problem konfrontiert, ohne viele Stile zu verwenden, haben Sie wahrscheinlich etwas falsch gemacht. Rufen Sie 'easyxf()' nicht auf, um beispielsweise einen Stil wiederholt in Zyklen zu beschreiben. –

+0

Korrekte Lösung sollte sein, Stile wiederzuverwenden. Ich glaube nicht, dass Sie 4094 verschiedene Stile haben ... Ich habe die Antwort unten aufgestockt, weil sie mehr Gültigkeit hat. –

+0

Es funktioniert .. danke –

4

Auf das gleiche Problem in der LOOP Begegnung ich die Beschreibung des Formats aus der Schleife herausgezogen haben und es weiterhin reibungslos:

dies nicht funktioniert hat:

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

aber dies tut:

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

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

Also, für zukünftige Generationen, wen auch immer Sie suchen zu antworten, tun Sie etwas falsch in Ihrem Code.

Was mit Ihrem Code passiert, ist, dass Sie mehr als 4094 verschiedene Stile Instanzen generiert haben (wichtig, nicht verschiedene Stile, es ist genug, wenn Sie neue Instanzen von Stil erstellen).

In unserem Fall hatten wir so etwas wie:

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

Wo Währung Formatierer neuen Stil für jede Zeile erstellt wurde.

Was wir zu tun hatten, war, den Stil für jede Währung zu cachen, wenn der Stil derselbe war.

Also, richtige Korrektur ist nicht so viele Stile zu erstellen!

Prost, Mike.

Verwandte Themen