Python—实现Excel的最合适列宽(openpyxl)_openpyxl 列宽_chaodaibing的博客-程序员秘密

技术标签: Python处理Excel  excel  python  

Python的Pandas模块是处理Excel的利器,尤其是加工保存Excel非常方便,但是唯独想让导出的Excel自动调整列宽或者行高,确实做不到啊,尤其是加工后还需要使用者自己调整列宽,非常不便。

所以必须openpyxl模块助力。这是最简单的实现:

from openpyxl import load_workbook
wb = load_workbook('test.xlsx')
ws = wb[wb.sheetnames[0]]                  # 打开第一个sheet
ws.column_dimensions['A'].width = 20.0     # 调整列A宽
ws.row_dimensions[1].height = 40    	   # 调整行1高
ws.save('test.xlsx')

但是如果随便让 一个Excel每个sheet都实现调整列宽怎么办呢,我写了这么一个函数
获取每一个sheet的每一列的最长值,将其设置为列宽

from openpyxl import load_workbook
from openpyxl.utils import get_column_letter 
def reset_col(filename):
	wb=load_workbook(filename)
	for sheet in wb.sheetnames:
		ws=wb[sheet]
		df=pd.read_excel(filename,sheet).fillna('-')
		df.loc[len(df)]=list(df.columns)						#把标题行附加到最后一行
		for col in df.columns:				
			index=list(df.columns).index(col)					#列序号
			letter=get_column_letter(index+1)					#列字母
			collen=df[col].apply(lambda x:len(str(x).encode())).max()	#获取这一列长度的最大值 当然也可以用min获取最小值 mean获取平均值
			ws.column_dimensions[letter].width=collen*1.2+4		#也就是列宽为最大长度*1.2 可以自己调整

	wb.save(filename)
	
reset_col('test.xlsx')

注意Openpyxl仅仅支持最新的.xlsx格式,如果执行有这样的报错:
File “C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\openpyxl\reader\excel.py”, line 94, in _validate_archive raise InvalidFileException(msg) openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support the old .xls file format, please use xlrd to read this file, or convert
说明文件格式老旧,请打开Excel文件,选择另存为.xlsx格式

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chaodaibing/article/details/106695798

智能推荐

用户态进程的虚拟地址如何转换成物理地址_用户态操作物理地址_山羊哥-老宋的博客-程序员秘密

用户态进程的虚拟地址如何转换成物理地址用户态进程的虚拟地址如何转换成物理地址?mmapmmap基础概念mmap内存映射原理mmap详解UMA和NUMA:mmap优点总结mmap相关函数用户态进程的虚拟地址如何转换成物理地址?区分一个进程,我们都知道最简单就是进程的pid。我们就从(pid,virtualaddress)来看看如何将一个进程的虚拟地址转换为物理地址phyaddress。首先根据pid我们可以得到这个进程的task_struct,进而通过task_struct得到mm,通过mm得到pg

Win7 x64 VC6无法调试程序的bug解决方法_双刃剑客的博客-程序员秘密

转:http://blog.csdn.net/wangningyu/article/details/37997079用VC6在64位Windows7下调试的时候,如果中断(Shift+F5)调试,程序无法退出。问题描述:当点击F5开始一个项目的调试时,程序在设置的断点处停止,这时按下Shift+F5后,vc6可以退出调试状态,但是WINDOWS系统的任务栏上会留下前面调

学生管理系统(JDBC)java版_jdbc学生管理系统_Mr.乐.的博客-程序员秘密

用Java做一个简易的员工管理系统文章目录第一步:引入数据库及JDBC的jar包 第二步:创建学生管理系统的类与方法 第三步:测试员工管理系统前言本文章适合学完javase,数组,面向对象,mysql数据库,JDBC核心功能:JDBC连接数据库及项目结构实现员工管理系统一、引入数据库及JDBC的jar包MySQL :: Download MySQL Community Server mysql下载地址MySQL :: Download Conn....

opencv编译运行demo碰到的问题_vs 运行opencv的sample_HUI的技术笔记的博客-程序员秘密

代码下载编译安装$ git clone https://github.com/opencv/opencv.git$ cd opencv$ mkdir build$ cd build$ cmake ..$ make$ sudo make install编译后demo运行出错> terminate called after throwing an instance of 'cv::Exception' what(): OpenCV(4.4.0-dev) /home/hui/dat

201621123010《Java程序设计》第10周学习总结_aikan2879的博客-程序员秘密

1. 本周学习总结1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容。2. 书面作业本次PTA作业题集异常1. 常用异常结合题集题目7-1回答1.1 自己以前编写的代码中经常出现什么异常、需要捕获吗(为什么)?应如何避免?答:7-1这题中主要做的就是捕获运行时产生的异常以及用户主动抛出的异常;以前编写的代码容易出现以下问题:ArrayIndexOutO...

随便推点

奇文异事--第一回_掘墓人4449的博客-程序员秘密

准备出一个新的分类,叫【奇文异事】,记录自己在网上看到的有意思的文章和事情。一、《技术分享周刊》访问地址:https://github.com/ruanyf/weekly最近偶然看到阮一峰整理的《技术分享周刊》,觉得很有意思,推荐收藏查看。每周的分享基本都包含以下几个方面:新闻教程工具资源文摘图片金句二、《数字世界中的纸张——理解 PDF》访问地址:https...

js代码模块化目的_hqmln的博客-程序员秘密

模块化的目标是:1.代码单元冠以命名,增强代码段的辨识度2.建立代码之间的依赖关系,降低代码段之间的耦合3.命名空间和上下文管理,减少代码段之间的相互冲突4.形成模块规范,提高代码段的复用性因此,一个完整的模块应当包含这几个属性1.模块名2.实现逻辑3.返回值4.所依赖的模块...

不用数学也能讲清贝叶斯理论的马尔可夫链蒙特卡洛方法?这篇文章做到了_z346859的博客-程序员秘密

大多数时候,贝叶斯统计在结果在最好的情况下是魔法,在最糟糕时是一种完全主观的废话。在用到贝叶斯方法的理论体系中,马尔可夫链蒙特卡洛方法尤其神秘。这篇文章将介绍马尔可夫链蒙特卡洛方法,极其背后的基本数学推理。首先,什么是马尔可夫链蒙特卡洛(MCMC)方法呢?最简短的回答就是:“MCMC就是一种通过在概率空间中随机采样来近似感兴趣参数的后验分布的方法”在这篇文章中,我不用任何数学知识就可以解释上面这个

eclipse 项目中搜索资源(类方法,文件名,文件中的字符串)(图解)_eclipse 根据接口路径搜索_LXR_Anran的博客-程序员秘密

编辑相关快捷键   Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率。Eclipse中有如下一些和编辑相关的快捷键。    1. 【ALT+/】    此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT+/】快捷键带来的好处吧。

想骂人!开发语言不能统一成一个么?_小姐姐味道的博客-程序员秘密

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。有时候,写TypeScript写多了,写Java的时候就老容易出错。而当陷入某个项目一段时间之后,自我感觉老熟悉...

只要UEFI+MBR_syaka007的博客-程序员秘密

之前发了一篇“实战WIN10+UEFI引导装系统(不重装不格盘100%成功)”的文章,今天在朋友那制作时候,发现漏了一步(重建引导部分,之前有人卡WINDOWS标徽那,估计就是引导指向错误了!),晕……现在重新发布一次!这次肯定没问题了!----------------------------------一般想要用UEFI,必须将BIOS+MBR格式转UEFI+GPT格式才可以,可是要将MBR...

推荐文章

热门文章

相关标签