默认情况下,DataFrame 的 to_excel() 方法导出到 Excel 格式是比较丑的,本篇的代码演示了用一种比较简单的方法进行美化。要点:
- to_excel() 方法的引擎使用 xlsxwriter
- 使用 Excel 的 Table (经常被称为超级表)
- 自动列宽
美化前,输出的格式如下:
美化后格式如下:
代码实现了通用化:
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)