如果wb
包含5个工作表,我每天都会使用openpyxl
为每个工作表添加一列,这一直运行良好。现在,只有超过60列,前N个列的宽度(似乎 B 到 BH )变为0.这导致列在Excel中打开时基本上消失了:
获取前几列的宽度确认了这一点(其中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
答案 0 :(得分:3)
它似乎不是列宽的问题,但列本身是隐藏的。你能发布完整的代码吗?
解决方法可能是fb.column_dimensions['B'].hidden = False
此外,我会使用pip install openpyxl