pandas 保存成excel,并 指定列宽

'''
  pandas保存成Excel,并指定列宽
'''
import pandas as pd
import time

def to_excel(df,fname='demo.xls',sheet_name='Sheet1',
             field_widths = {'name': 10, 'age': 4}
            ):
    # 保存excel
    # df.to_excel(fname) #能保存,但不能设列宽,换成以下方法
    while True:
        try:
            with  pd.ExcelWriter(fname) as writer:
                df.to_excel(writer, sheet_name=sheet_name, index_label='序号')
                worksheet = writer.sheets[sheet_name]
                # 设置列宽
                for k, v in field_widths.items():
                    if k in df.columns: #存在这个列名
                        i = df.columns.to_list().index(k) + 1  # '证件号码' 是第i列
                        worksheet.set_column(i, i, v)  # 设置 第i列 宽度=v
                writer.save()
        except:
            print(f'无法写入{fname},如已打开,请关闭该文件。。。')
            time.sleep(3)
        else:
            # print(f'{fname} 已写入!')
            break
            pass
    return

if __name__ == '__main__':
    data=[ ('张三','142610199101010011','男','山西省临汾市尧都区东大街101号','职员'),
           ('李四','142610199101010022','女','山西省临汾市襄汾县西大街102号','职员')  ]

    df=pd.DataFrame(data,columns=['姓名','证件号码','性别','地址','职务'])
    to_excel(df,fname='tmp1.xlsx',sheet_name='人员表',
             field_widths = {'姓名': 20, '地址': 30})
    pass

运行结果,打开 tmp1.xlsx

在这里插入图片描述

姓名、地址都变成了设置的宽度
证件号码没有设置,挤在了一起

修改代码:

    to_excel(df,fname='tmp1.xlsx',sheet_name='人员表',
             field_widths = {'姓名': 20, '地址': 30, '证件号码':22})

结果完美
在这里插入图片描述

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值