11

我使用 Xlwt 编写一个 excel 文件。它的单元格有一些风格(颜色,对齐方式,边框,...)

当我使用 XFSt​​yle 并设置边框和其他样式属性时,在某些情况下会出错:超过 4094 个 XF(样式)

为什么?我应该怎么处理这个错误?

谢谢

4

3 回答 3

19

我阅读并跟踪在执行期间调用的函数和方法。

我找到解决方案:

wb = xlwt.Workbook(style_compression=2)

使用:style_compression=2

这是工作!

于 2013-06-17T04:37:46.503 回答
8

在循环中遇到同样的问题时,我从循环中提取了格式的描述,并且它继续顺利:

这不起作用:

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)
于 2014-08-05T11:37:19.890 回答
4

因此,对于后代,无论您正在寻找答案的人,您都在代码中做错了。

基本上,您的代码发生的情况是您生成了超过 4094 个不同的样式实例(重要的是,不是不同的样式,如果您创建新的样式实例就足够了)。

在我们的例子中,我们有类似的东西:

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

货币格式化程序为每一行创建了新样式。

如果样式相同,我们必须做的是缓存每种货币的样式。

所以,正确的解决方法是不要创建这么多样式!

干杯,迈克。

于 2015-08-15T16:44:31.340 回答