用XlsxWriter设置Excel的表格边框

作者: AdamYide | 来源:发表于2020-05-04 00:58 被阅读0次

    1. 背景

    在用Pandas做数据处理时,为了呈现方便,往往会将结果数据导出为Excel文件。但美中不足的是Pandas并不支持Excel文件格式的设置。
    而XlsxWriter可以与Pandas无缝结合,并具有非常精细的Excel格式控制功能。XlsxWriter对于Python初学者来说有一定的学习门槛,可以查询官网文档进行学习。

    2. 问题

    笔者在使用时,卡在了表格边框的设置上面。

    在设置好format后,采用worksheet.set_column()worksheet.set_row()对行或列进行边框设置时,要么出现:
    “所选列全部设置了边框”

    要么出现:

    “所选行全部设置了边框”

    的情况。

    3. 解决方法

    worksheet.conditional_format()

    参数及使用方法详见官网说明文档

    4. 举个栗子

    我们采用官网教程的例子:tutorial01.xlsx

    Excel表格中数据如下:

    原始数据

    我们将该excel表格导入DataFrame,如下:

    import pandas as pd
    
    df = pd.read_excel('https://adamyide-1256435674.cos.ap-shanghai.myqcloud.com/tutorial01.xlsx', header = None, index = None)
    

    df为:

    df中的数据

    接下来,开始设置表格边框:

    writer = pd.ExcelWriter('tutorial01_bolder.xlsx',engine='xlsxwriter')
    df.to_excel(writer,sheet_name='sheet1', header = None, index = None)
    
    workbook = writer.book
    worksheet = writer.sheets['sheet1']
    
    format_border = workbook.add_format({'border':1})   # 设置边框格式
    worksheet.conditional_format('A1:XFD1048576',{'type':'no_blanks', 'format': format_border}) #   这里是核心,根据条件来设置格式
    
    workbook.close()
    

    format_border = workbook.add_format({'border':1})中的'border':格式:上面代码中的1是index值。

    Index Name Weight Style
    0 None 0
    1 Continuous 1 -----------
    2 Continuous 2 -----------
    3 Dash 1 - - - - - -
    4 Dot 1 . . . . . .
    5 Continuous 3 -----------
    6 Double 3 ===========
    7 Continuous 0 -----------
    8 Dash 2 - - - - - -
    9 Dash Dot 1 - . - . - .
    10 Dash Dot 2 - . - . - .
    11 Dash Dot Dot 1 - . . - . .
    12 Dash Dot Dot 2 - . . - . .
    13 SlantDash Dot 2 / - . / - .

    worksheet.conditional_format('A1:XFD1048576',{'type':'no_blanks', 'format': format_border})可以查看官网说明,实际上是根据条件判断,进行格式化。

    'A1:XFD1048576'是目前.xlsx格式文件支持的sheet大小,如果想提高运行效率,可以在已知表格大小的情况下,缩小这个区域。笔者没有尝试,应该会有效果吧。

    这里注意参数中的'type',内容可以非常丰富,具体可以参考下官网Working with Conditional Formatting这一章。

    最终出来的excel表格效果是这样:

    输出效果

    已经可以满足我的需求了。

    注意:以上代码框中的代码可以直接在装有pandas的环境中运行,文件会存在当前运行目录中。

    5 感谢:

    相关文章

      网友评论

        本文标题:用XlsxWriter设置Excel的表格边框

        本文链接:https://www.haomeiwen.com/subject/qsbsghtx.html