pandas 导出 Excel 文件的时候自动列宽,自动加上边框

这篇博客分享了一个Python代码片段,该片段利用pandas库在导出Excel文件时自动设置列宽和添加边框。作者推荐在数据分析中使用pandas,因为它提供了方便的数据处理能力,通常不需要借助数据库和SQL。文中提供的函数`to_excel_autowidth_and_border`实现了自动调整列宽和添加边框的功能,适用于需要美化Excel输出的情况。
摘要由CSDN通过智能技术生成

尝试过 xlrd、xlwt、openpyxl、xlwings、pandas 来处理 Excel,如果说除了读写 Excel,还要做数据分析,还是 pandas 最好用,大多数情况下,你根本不需要把数据插入数据库,再用 SQL 去做数据分析。

至于 pandas 怎么用,官方网站有个 10 分钟上手 pandas 的教程[1],没有体验过的可以去体验下。也可以参考 API 说明[2]

今天主要分享一段代码,可以让 pandas 导出 Excel 文件的时候自动列宽,自动加上边框,省去了手工调整的麻烦。

def to_excel_autowidth_and_border(writer, df, sheetname, startrow,startcol):
    df.to_excel(
        writer, sheet_name=sheetname, index=False, startrow=startrow, startcol=startcol
    )  # send df to writer
    workbook = writer.book
    worksheet = writer.sheets[sheetname]  # pull worksheet object
    formater = workbook.add_format({"border": 1})
    for idx, col in enumerate(df):  # loop through all columns
        series = df[col]
        max_len = (
            max(
                (
                    series.astype(str).map(len).max(),  # len of largest item
                    len(str(series.name)),  # len of column name/header
                )
            )
            * 3
            + 1
        )  # adding a little extra space
        # print(max_len)
        worksheet.set_column(
            idx + startcol, idx + startcol, max_len
        )  # set column width
    first_row = startrow
    first_col = startcol
    last_row = startrow + len(df.index)
    last_col = startcol + len(df.columns)
    worksheet.conditional_format(
        first_row,
        first_col,
        last_row,
        last_col - 1,
        options={"type": "formula", "criteria": "True", "format": formater},
    )

def main():
    writer = pd.ExcelWriter("./result.xlsx")
    df = pd.read_excel(
        sheet_name=sheet_name, io="/Users/aaron/Desktop/xxxx.xlsx"
    )
    to_excel_autowidth_and_border(writer, df, sheetname="缺陷分析结果", startrow=1, startcol=1)
    writer.save()

最后的话

本文分享了如何在导出 Excel 文件的时候自动列宽,自动加上边框。如果有帮助,还请点赞、在看、转发支持。

fd007338bd9c7f9d19298729221ebaa3.png

参考资料

[1]

10 分钟上手 pandas 的教程: https://pandas.pydata.org/docs/user_guide/10min.html

[2]

API 说明: https://pandas.pydata.org/docs/reference/index.html#api

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值