xlwt установить стиль делает ошибку: более 4094 XFs (стили)

Я использую Xlwt для написания файла excel. это ячейки имеют некоторый стиль (цвет, выравнивание, границы,... )

когда я использую XFStyle и устанавливаю границы и другие attr стиля, в некоторых случаях он делает ошибку: Более 4094 XFs (стили)

Почему? что мне делать с этой ошибкой?

спасибо

3 ответов


Я читаю и отслеживаю функции и методы, которые вызывают во время выполнения.

Я нашел решение:

wb = xlwt.Workbook(style_compression=2)

использование : style_compression=2

свою работу!


столкнувшись с той же проблемой в цикле, я извлек описание формата из цикла, и он продолжил плавно:

это не работает:

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

а это:

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

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

Итак, для будущих поколений, кто бы вы ни искали ответ, Вы делаете что-то неправильно в своем коде.

в основном, что происходит с вашим кодом, так это то, что вы создали более 4094 различных экземпляров стилей (важно, а не разные стили, этого достаточно, если вы создаете новые экземпляры стиля).

в нашем случае у нас было что-то вроде:

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

где форматер валют был создан новый стиль для каждой строки.

что мы должны были сделать, было стиль кэша для каждой валюты, если стиль был одинаковым.

Итак, правильное исправление - не создавать так много стилей!