pandas DataFrame 导出到Excel格式美化

本文介绍了如何使用pandas的to_excel()方法配合xlsxwriter库,通过自动调整列宽和创建Excel表格(超级表)来美化DataFrame的Excel导出格式,实现了一个通用化的代码示例。
摘要由CSDN通过智能技术生成

默认情况下,DataFrame 的 to_excel() 方法导出到 Excel 格式是比较丑的,本篇的代码演示了用一种比较简单的方法进行美化。要点:

  1. to_excel() 方法的引擎使用 xlsxwriter
  2. 使用 Excel 的 Table (经常被称为超级表)
  3. 自动列宽

美化前,输出的格式如下:

美化后格式如下:


代码实现了通用化:


import pandas as pd
import os

def format_excel(writer, sheet_name, df):
    '''
    将DataFrame写入Excel, 格式美化
    writer:     XlsxWriter
    sheet_name: 要写入的工作表名
    df:         DataFrame
    '''
    column_settings = [{'header': column} for column in df.columns]
    (max_row, max_col) = df.shape

    worksheet = writer.sheets[sheet_name]
    worksheet.add_table(0, 0, max_row, max_col - 1, {'columns': column_settings,'banded_rows': False })
    worksheet.autofit()

    writer.close()


path = os.path.dirname(os.path.abspath(__file__))
fname = os.path.join(path, 'source.xlsx')

df = pd.read_excel(fname, sheet_name=0)

writer = pd.ExcelWriter(os.path.join(path, 'output.xlsx'), engine='xlsxwriter')
df.to_excel(writer, 'Sheet1', index=False)
format_excel(writer, "Sheet1", df)
  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Python中,可以使用pandas库将多个DataFrame保存到一个Excel文件中,并设置特定的日期格式和百分比显示。可以使用openpyxl库或者xlwt库来进行操作。 首先,我们需要创建一个Excel文件和工作表。然后,使用.write_row()方法将表头写入第一行,并设置对应的单元格格式。使用.write_column()方法将DataFrame的数据逐列写入从第二行开始的位置,并设置相应的单元格格式。 可以使用xlwt库来实现这个功能。可以定义一些单元格格式,如日期格式、百分比格式等。使用write_row()方法将表头写入第一行,并使用header_format作为单元格格式。使用write_column()方法将DataFrame的每一列数据从第二行开始逐列写入,并设置相应的单元格格式。 在代码中,worksheet1和worksheet2代表两个不同的工作表,df1和df2分别代表两个不同的DataFrame。可以根据需要修改代码中的行列索引和格式。 示例代码如下: ```python import pandas as pd import xlwt # 创建Excel文件和工作表 workbook = xlwt.Workbook() worksheet1 = workbook.add_sheet('Sheet1') worksheet2 = workbook.add_sheet('Sheet2') # 定义单元格格式 format_datetime = xlwt.easyxf(num_format_str='yyyy-mm-dd') format_integer = xlwt.easyxf(num_format_str='0') format_integer_separator = xlwt.easyxf(num_format_str='#,##0') format_general = xlwt.easyxf(num_format_str='General') format_float = xlwt.easyxf(num_format_str='0.00') format_percent = xlwt.easyxf(num_format_str='0.00%') # 写入表头数据 header_format = xlwt.easyxf( 'font: bold on; align: vertical center, horizontal center; pattern: pattern solid, fore_colour dark_blue;' 'borders: left thin, right thin, top thin, bottom thin; font: colour white;' ) worksheet1.write_row(0, 0, df1.columns, header_format) worksheet2.write_row(0, 0, df2.columns, header_format) # 写入数据 worksheet1.write_column(1, 0, df1.iloc[:, 0], format_datetime) worksheet1.write_column(1, 1, df1.iloc[:, 1], format_integer) worksheet1.write_column(1, 2, df1.iloc[:, 2], format_integer_separator) worksheet1.write_column(1, 3, df1.iloc[:, 3], format_general) worksheet1.write_column(1, 4, df1.iloc[:, 4], format_float) worksheet1.write_column(1, 5, df1.iloc[:, 5], format_percent) worksheet2.write_column(1, 0, df2.iloc[:, 0], format_datetime) worksheet2.write_column(1, 1, df2.iloc[:, 1], format_integer) worksheet2.write_column(1, 2, df2.iloc[:, 2], format_integer_separator) worksheet2.write_column(1, 3, df2.iloc[:, 3], format_general) worksheet2.write_column(1, 4, df2.iloc[:, 4], format_float) worksheet2.write_column(1, 5, df2.iloc[:, 5], format_percent) # 设置列宽 worksheet1.col(0).width = 256 * 15 # 第一列宽度为15个字符 worksheet2.col(0).width = 256 * 15 # 保存Excel文件 workbook.save('output.xlsx') ``` 在上述代码中,我们使用了xlwt库来操作Excel文件。首先,我们创建了一个Workbook对象,并添加了两个工作表。然后,定义了一些不同的单元格格式,包括日期格式、整数格式、带分隔符的整数格式、通用格式、浮点数格式和百分比格式。接下来,使用write_row()方法将表头写入第一行,并使用header_format作为单元格格式。然后,使用write_column()方法将DataFrame的每一列数据从第二行开始逐列写入,

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值