【问题标题】:How to apply multiple formats to one column with XlsxWriter如何使用 XlsxWriter 将多种格式应用于一列
【发布时间】:2015-06-05 03:52:23
【问题描述】:

在下面的代码中,我将数字格式应用于我的 Excel 工作表中的每一列。但是,我似乎无法将多种格式应用于特定列,无论是居中还是编号最终都会被覆盖。甚至可以对一列应用两种类型的格式吗?

def to_excel(video_report):

    # Create a Pandas Excel writer using XlsxWriter as the engine.
    writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')

    # Convert the dataframe to an XlsxWriter Excel object.
    video_report.to_excel(writer, sheet_name='Sheet1', na_rep="-")

    # Get the xlsxwriter objects from the dataframe writer object.
    workbook  = writer.book
    worksheet = writer.sheets['Sheet1']

    # Add some cell formats.
    integer = workbook.add_format({'num_format': '0'})
    decimal = workbook.add_format({'num_format': '0.00'})
    percentage = workbook.add_format({'num_format': '0.0%'})
    center = workbook.add_format({'align': 'center'})

    # APPLY CENTERING
    worksheet.set_column('B:L', None, center)

    # APPLY NUMBER FORMATTING   
    worksheet.set_column('B:B', 13, integer )
    worksheet.set_column('C:C', 17, percentage )
    worksheet.set_column('D:D', 19, percentage )
    worksheet.set_column('E:E', 15, integer )
    worksheet.set_column('F:F', 15, percentage )
    worksheet.set_column('G:G', 15, decimal )
    worksheet.set_column('H:H', 13, integer )
    worksheet.set_column('I:I', 13, integer )
    worksheet.set_column('J:J', 13, integer )
    worksheet.set_column('K:K', 13, integer )
    worksheet.set_column('L:L', 13, integer )


    writer.save()

to_excel(video_report)

【问题讨论】:

    标签: python pandas xlsxwriter


    【解决方案1】:

    甚至可以对一列应用两种类型的格式吗?

    是的。通过将两个或多个属性添加到您正在使用的格式对象。例如:

    integer = workbook.add_format({'num_format': '0', 'align': 'center'})
    

    请参阅 XlsxWriter docs on how to use formats

    【讨论】:

      【解决方案2】:

      虽然 jmcnamara 最好地回答了这个问题,但您也可以定义一个新的格式对象。替代示例:

      header = workbook.add_format({'align': 'center'})
              header.set_bold()
              header.set_italic()
              header.set_underline()
      
      worksheet.write(0, col_hdr, key, header)
      

      【讨论】:

      猜你喜欢
      • 2021-05-25
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      相关资源
      最近更新 更多