新手-我有一个Python脚本,可以根据指定的值调整excel文件中不同列的宽度:
import openpyxl
from string import ascii_uppercase
newFile = "D:\Excel Files\abc.xlsx"
wb = openpyxl.load_workbook(filename = newFile)
worksheet = wb.active
for column in ascii_uppercase:
if (column=='A'):
worksheet.column_dimensions[column].width = 30
elif (column=='B'):
worksheet.column_dimensions[column].width = 40
elif (column=='G'):
worksheet.column_dimensions[column].width = 45
else:
worksheet.column_dimensions[column].width = 15
wb.save(newFile)
有没有什么方法可以把每一列的宽度调整到最佳值,而不需要为不同的列显式指定宽度(也就是说,不需要使用这个“if-elif-elif-...... -elif-else”结构)?谢谢!
9条答案
按热度按时间qvsjd97n1#
这可能会做得更简洁,但它确实起作用了。你会想根据你在查看它时使用的字体的好坏来调整adjusted_width的值。如果你使用monotype,你可以得到它的精确值,但它不是一对一的相关性,所以你仍然需要调整它一点。
如果你想在不使用monotype的情况下变得花哨和精确,你可以按宽度排序字母,并为每个宽度分配一个浮点值,然后相加。这将需要第三个循环来解析单元格值中的每个字符,并对每列的结果求和,可能还需要一个字典来按宽度排序字符,也许有点夸张,但如果你这样做的话很酷。
编辑:实际上似乎有一种更好的方法来测量文本的视觉大小:link我个人更喜欢matplotlib技术。
希望我能帮上忙,我的第一个stackoverflow回答=)
6ss1mwsb2#
openpyxl 3.0.0的更新版本(在
TypeError: expected <class 'str'>
中使用.columns失败:b4lqfgs43#
在最新的openpyxl中,你可以使用:
5tmbdcev4#
根据上面的评论,并添加此帖子openpyxl - adjust column width size .我成功了,但答案应该是:
我正在使用openpyxl =“^3.0.5”
mnowg1ta5#
我遇到了merged_cells和autosize无法正常工作的问题,如果您遇到了同样的问题,您可以通过在oldsea代码中添加下一行来解决
fnvucqvd6#
只需要在你的文件中插入下面的代码行。就这样(如果你没有,安装上面提到的库)
vi4fp9gy7#
7gs2gvoe8#
上面的代码行将调整列的宽度以达到最佳匹配
piv4azn79#