我使用Xlwt编写excel文件。它的细胞有一些风格(颜色,对齐,边框,......)
当我使用XFStyle并设置边框和其他样式的attr时,在某些情况下它会产生错误: 超过4094个XF(样式)
为什么呢? 我该怎么办这个错误?
感谢
答案 0 :(得分:16)
我读取并跟踪在执行期间调用的函数和方法。
我找到解决方案:
wb = xlwt.Workbook(style_compression=2)
使用:style_compression = 2
它的工作!
答案 1 :(得分:5)
在LOOP中遇到同样的问题后,我从循环中提取了格式描述,并且它继续顺利进行:
这不起作用:
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)
答案 2 :(得分:2)
因此,对于后代,无论您是在寻找答案,您的代码都会出错。
基本上,你的代码会发生的事情是你生成了4094个不同的样式实例(重要的是,不是不同的样式,如果你创建新的样式实例就足够了。)
在我们的案例中,我们有类似的东西:
for i, row in enumerate(rows):
workbook.write(i, 0, row, currency_formatter(row))
为每行创建了货币格式化程序的新样式。
我们必须做的是,如果样式相同,则按每种货币缓存样式。
所以,正确的解决方法不是创建这么多样式!
干杯,迈克。