在60多列之后,Openpyxl中的列宽(某些列的列)变为零

时间:2015-09-18 00:27:10

标签: python python-2.7 excel-2007 openpyxl

如果wb包含5个工作表,我每天都会使用openpyxl为每个工作表添加一列,这一直运行良好。现在,只有超过60列,前N个列的宽度(似乎 B BH )变为0.这导致列在Excel中打开时基本上消失了:

enter image description here

获取前几列的宽度确认了这一点(其中fb<Worksheet>个对象):

In [71]: fb.column_dimensions["A"].width
Out[71]: 46.125
In [72]: fb.column_dimensions["B"].width
Out[72]: 0.0
In [73]: fb.column_dimensions["BI"].width
Out[73]: 11.75
In [73]: fb.column_dimensions["BJ"].width
Out[73]: 10.25

我尝试过设置auto_size:

for dimension in fb.column_dimensions.values():
    dimension.auto_size = True

然后保存工作簿,但这没有任何效果(列在Excel中仍然不可见)。所以我尝试手动将几列的大小设置为合理的大小,例如12:

fb.column_dimensions["B"].width = 12

再次保存,但仍然没有变化(Excel中的列仍然不可见),尽管我在openpyxl中重新加载电子表格并检查列宽,但它们被设置为新的(非零) )大小。

这些方法中的一种或两种是否都有效,而且我还缺少一个额外的步骤?

Python:2.7.10

Openpyxl:2.2.2

1 个答案:

答案 0 :(得分:3)

它似乎不是列宽的问题,但列本身是隐藏的。你能发布完整的代码吗?

解决方法可能是fb.column_dimensions['B'].hidden = False

此外,我会使用pip install openpyxl

更新到最新版本的openpyxl