You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas在Excel每行后插入空白行?

在Pandas写入Excel时每行(含表头后)插入空白行的实现方法

需求说明

希望实现表头行之后、每一行数据之后都插入空白行的效果,示例格式如下:

Col1 Col2 Col3 Col4   (This is the Header)
--------------Blank row
C1    C2   C3   C4
--------------Blank row
C1    C2   C3   C4
--------------Blank row
C1    C2   C3   C4

用户原代码

def create_excel_with_format(headers,values,full_file_name_with_path):
   
   df = pd.DataFrame(data=values,columns=headers)
   with pd.ExcelWriter(full_file_name_with_path) as writer:
       df.to_excel(writer, index=False)

   workbook  = writer.book
   worksheet = writer.sheets['Sheet1']
   #font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
   header_format = workbook.add_format({
        'bold': False,
        'border': False,
        'text_wrap': True})
   
   for col_num, value in enumerate(df.columns.values):
        worksheet.write(0, col_num, value, header_format)

   font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 13})
   worksheet.set_row(0, None, font_fmt)

两种可行修改方案

方案一:修改DataFrame后写入(推荐,逻辑清晰)

先在DataFrame的每行数据后插入空行,再写入Excel,避免操作Excel行列时的索引混乱:

import pandas as pd

def create_excel_with_format(headers, values, full_file_name_with_path):
    # 1. 构造原始数据的DataFrame
    df = pd.DataFrame(data=values, columns=headers)
    
    # 2. 构造包含空行的组合DataFrame:每行数据后加一行空行
    rows_list = []
    for _, row in df.iterrows():
        rows_list.append(row)
        # 生成和表头列数一致的空行
        rows_list.append(pd.Series([None]*len(headers), index=headers))
    combined_df = pd.DataFrame(rows_list, columns=headers)
    
    # 3. 写入Excel并设置格式
    with pd.ExcelWriter(full_file_name_with_path, engine='xlsxwriter') as writer:
        combined_df.to_excel(writer, index=False, header=True)
        
        workbook = writer.book
        worksheet = writer.sheets['Sheet1']
        
        # 设置表头格式
        header_format = workbook.add_format({
            'bold': False,
            'border': False,
            'text_wrap': True,
            'font_name': 'Arial',
            'font_size': 13
        })
        # 给表头列应用格式
        for col_num, value in enumerate(df.columns.values):
            worksheet.write(0, col_num, value, header_format)
        
        # 设置数据行和空行的字体格式
        font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
        for row_num in range(1, len(combined_df)+1):
            worksheet.set_row(row_num, None, font_fmt)

方案二:直接操作Excel工作表插入行

如果不想修改DataFrame,可以直接通过xlsxwriter的API插入行,注意要从下往上插,避免索引混乱:

import pandas as pd

def create_excel_with_format(headers, values, full_file_name_with_path):
    df = pd.DataFrame(data=values, columns=headers)
    
    with pd.ExcelWriter(full_file_name_with_path, engine='xlsxwriter') as writer:
        df.to_excel(writer, index=False)
        
        workbook = writer.book
        worksheet = writer.sheets['Sheet1']
        
        # 设置表头格式
        header_format = workbook.add_format({
            'bold': False,
            'border': False,
            'text_wrap': True,
            'font_name': 'Arial',
            'font_size': 13
        })
        for col_num, value in enumerate(df.columns.values):
            worksheet.write(0, col_num, value, header_format)
        
        # 从下往上插入空行:避免插入后索引错乱
        insert_pos = len(df) + 1
        for _ in range(len(df)):
            worksheet.insert_row(insert_pos, 1)
            insert_pos -= 2
        # 最后在表头后插入一行空行
        worksheet.insert_row(1, 1)
        
        # 设置所有行的字体格式
        font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10})
        worksheet.set_row(0, None, header_format)
        for row_num in range(1, len(df)*2 + 2):
            worksheet.set_row(row_num, None, font_fmt)

内容的提问来源于stack exchange,提问作者nikhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:17:09