我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python如何实现Excel的最合适列宽(openpyxl)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python如何实现Excel的最合适列宽(openpyxl)

Excel的最合适列宽(openpyxl)

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格式

Python写Excel列宽,行高的一些方法

使用第三方库 xlsxwriter,结果文件格式为xlsx

代码如下:

 import xlsxwriter
# 创建一个新工作簿并添加一个工作表。
workbook = xlsxwriter.Workbook(r'\\Mac\Home\Desktop\test11.xlsx')
worksheet = workbook.add_worksheet('test')
# 为第一列设置格式
worksheet.set_column('A:A', 30)                                 # 设置A列宽度30
worksheet.set_column('B:B', 20)                                 # 设置B列宽度20
# cell_format = workbook.add_format({'bold': True})
worksheet.set_row(3, 20)                                           # 设置第4行高度为20
# worksheet.set_row(3, 20,cell_format)

实现结果截图如下:

使用第三方库 xlwt,结果文件格式为xls

代码如下:

import xlwt
book = xlwt.Workbook(r'\\Mac\Home\Desktop\test22.xls')
sheet = book.add_sheet('sheet1')
first_col=sheet.col(0)
sec_col=sheet.col(1)
first_col.width=256*20                                 # 宽度
tall_style = xlwt.easyxf('font:height 720;')      # 36pt,类型小初的字号
first_row = sheet.row(0)
first_row.set_style(tall_style)
book.save(r'\\Mac\Home\Desktop\test22.xls')

参数解释:

	'''
	xlwt中列宽的值表示方法:默认字体0的1/256为衡量单位。
	xlwt创建时使用的默认宽度为2960,既11个字符0的宽度
	所以我们在设置列宽时可以用如下方法:
	width = 256 * 20    256为衡量单位,20表示20个字符宽度
	'''

实现结果截图如下:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python如何实现Excel的最合适列宽(openpyxl)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python怎么实现Excel的最合适列宽

这篇文章主要介绍“Python怎么实现Excel的最合适列宽”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么实现Excel的最合适列宽”文章能帮助大家解决问题。Excel的最合适列宽(
2023-06-29

vue如何实现el-table列宽自适应

这篇文章给大家分享的是有关vue如何实现el-table列宽自适应的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区别
2023-06-15

python如何实现Excel多行多列的转换

今天小编给大家分享一下python如何实现Excel多行多列的转换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、使用需求
2023-07-05

Python如何实现列表的最小公倍数

小编给大家分享一下Python如何实现列表的最小公倍数,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. lcmfrom functools import red
2023-06-25

python如何实现列表拼接与合并

这篇文章将为大家详细讲解有关python如何实现列表拼接与合并,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。列表拼接&合并首先从字符串列表开始:colors = [red, blue, green, ye
2023-06-27

Python如何实现Excel求和、合并居中的操作示例

这篇文章主要介绍了Python如何实现Excel求和、合并居中的操作示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。需求原始表格:想在Total列中对每日的Amount进行
2023-06-14

如何理解Python是最适合机器学习项目的语言

这篇文章给大家介绍如何理解Python是最适合机器学习项目的语言,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python因为稳定且易于维护的特性,表现一直很好,近年来,Python 吸引了很多人的眼球。 TIOBE
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录