我使用 Xlwt 编写一个 excel 文件。它的单元格有一些风格(颜色,对齐方式,边框,...)
当我使用 XFStyle 并设置边框和其他样式属性时,在某些情况下会出错:超过 4094 个 XF(样式)
为什么?我应该怎么处理这个错误?
谢谢
我阅读并跟踪在执行期间调用的函数和方法。
我找到解决方案:
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))
货币格式化程序为每一行创建了新样式。
如果样式相同,我们必须做的是缓存每种货币的样式。
所以,正确的解决方法是不要创建这么多样式!
干杯,迈克。