Python如何实现Excel的最合适列宽(openpyxl)
⽬录
Excel的最合适列宽(openpyxl)
这是最简单的实现
Python写Excel列宽,⾏⾼的⼀些⽅法
使⽤第三⽅库xlsxwriter,结果⽂件格式为xlsx
使⽤第三⽅库xlwt,结果⽂件格式为xls
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.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]
ad_excel(filename,sheet).fillna('-')
df.loc[len(df)]=lumns)      #把标题⾏附加到最后⼀⾏
for col lumns:
index=lumns).index(col)    #列序号
letter=get_column_letter(index+1)    #列字母
collen=df[col].apply(lambda x:len(str(x).encode())).max() #获取这⼀列长度的最⼤值当然也可以⽤min获取最⼩值 mean获取平均值
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)
ptions.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')
# 为第⼀列设置格式
python中lambda怎么使用
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_l(0)
sec_l(1)
first_col.width=256*20                                # 宽度
tall_style = xlwt.easyxf('font:height 720;')      # 36pt,类型⼩初的字号
first_row = w(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个字符宽度
'''
实现结果截图如下:
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。