折腾:
【已解决】用openpyxl去新建excel文件并保存数据和设置单元格样式
后,发现生成的excel是:
其中,表头的宽度没有像另外一个手动创建并设置后的,去自动适应宽度:
openpyxl column width auto
python – openpyxl – adjust column width size – Stack Overflow
Python – Automatically adjust width of an excel file’s columns – Stack Overflow
openpyxl / openpyxl / issues / #425 – auto_size not working — Bitbucket
好像有个auto_size
去找找看
openpyxl column_dimensions
openpyxl.worksheet.dimensions module — openpyxl 2.5.3 documentation
“auto_size
Aliases can be used when either the desired attribute name is not allowed or confusing in Python (eg. “type”) or a more descriptve name is desired (eg. “underline” for “u”)”
看不懂
但是看到有个:
bestFit
Python使用openpyxl读写excel文件 – sunhaiyu – 博客园
“# 第2行行高sheet.row_dimensions[2].height = 40# C列列宽sheet.column_dimensions[‘C’].width = 30”
实在不行,就直接设置对应行高和列宽
openpyxl column_dimensions auto size
去试试:
结果好像是生效了一半:
现在是隐藏掉了该列:
但是双击后,可以显示出来:
那去试试:
以及参考:
openpyxl / openpyxl / issues / #425 – auto_size not working — Bitbucket
感觉best fit好像是我们要的效果:
自动根据内容匹配宽度?
结果试了半天:
# ws.column_dimensions["D"].auto_size = True
# ws.column_dimensions["D"].bestFit = False
# ws.column_dimensions["D"].collapsed = True
ws.column_dimensions["L"].auto_size = True
ws.column_dimensions["L"].bestFit = True
ws.column_dimensions["L"].collapsed = False
要么是:
直接把对应的列隐藏了
要么是不起效果。
【总结】
openpyxl的sheet中的column_dimensions的auto_size,bestFit,collapsed,都无法启到此处想要的效果:自动设置列宽。
最后只能是单独设置宽度了:
nameCell = ws["A1"]
nameCell.value = "名称"
ws.merge_cells(‘A1:A2’)
ws.column_dimensions["A"].width = 15
isSeriesCell = ws["D1"]
isSeriesCell.value = "是否是系列"
ws.merge_cells(‘D1:D2’)
# ws.column_dimensions["D"].auto_size = True
# ws.column_dimensions["D"].bestFit = False
# ws.column_dimensions["D"].collapsed = True
ws.column_dimensions["D"].width = 10
fitAgeRangeCell = ws["L1"]
fitAgeRangeCell.value = "适用年龄层(年)"
ws.merge_cells(‘L1:L2’)
# ws.column_dimensions["L"].auto_size = True
# ws.column_dimensions["L"].bestFit = True
# ws.column_dimensions["L"].collapsed = False
ws.column_dimensions["L"].width = 14
# ws["L3"].value = "很长的值很长的值很长的值测试列宽"
效果:
【后记 20180510】
表头的部分内容由于行高太低而不显示了:
想要去增加行高:
通过:
ws.column_dimensions["A"].width = 20
猜测到有:
row_dimensions
但是要去找找是否有
Search — openpyxl 2.5.3 documentation
-》
openpyxl.worksheet.copier — openpyxl 2.5.3 documentation
def _copy_dimensions(self):
for attr in (‘row_dimensions’, ‘column_dimensions’):
以及具体如何使用
Search — openpyxl 2.5.3 documentation
-》
Working with styles — openpyxl 2.5.3 documentation
>>> row = ws.row_dimensions[1]
果然是猜测的是,直接数字就表示行
去试试
【总结】
然后用代码:
ws.row_dimensions[1].height = 30
ws.row_dimensions[2].height = 20
达到了增加行高,内容完全显示的效果:
转载请注明:在路上 » 【部分解决】openpyxl的excel设置列宽自适应+设置行高