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

如何从D列开始将DataFrame追加至含格式的Excel文件?

实现DataFrame从指定列追加到Excel并保留原有格式

需求说明

拥有Excel文件out_file和DataFramedfSave,需达成以下目标:

  • 将DataFrame从D列开始追加到Excel的「Sheet 1」工作表
  • 自动跳过已填充的行,仅在空白行的D列起始位置写入数据
  • 不破坏Excel中原有的背景色、自动换行等格式(已知openpyxl默认从“未使用”行开始追加,需调整写入列的定位逻辑)

现有代码(待优化)

wb = load_workbook(filename=out_file)
ws = wb["Sheet 1"]
for r in dataframe_to_rows(dfSave, index=False, header=False):
    ws.append(r)
wb.save(out_file)

表格状态说明

  • 初始状态:A-C列已有带格式的填充内容,D列及对应行位为空白
  • 最终状态:D列开始的对应行成功写入DataFrame数据,原有列的格式完全保留

优化后的代码实现

from openpyxl.utils.dataframe import dataframe_to_rows

wb = load_workbook(filename=out_file)
ws = wb["Sheet 1"]

# 获取工作表中真正有数据的最大行号(自动忽略仅含格式的空行)
max_data_row = ws.max_row

# 遍历DataFrame行,从D列(第4列)开始逐单元格写入
for row_offset, df_row in enumerate(dataframe_to_rows(dfSave, index=False, header=False), start=1):
    target_excel_row = max_data_row + row_offset
    # 从第4列(D列)开始填充当前行的每个值
    for col_offset, cell_value in enumerate(df_row, start=4):
        ws.cell(row=target_excel_row, column=col_offset, value=cell_value)

wb.save(out_file)

代码逻辑说明

  • 用ws.max_row精准获取有数据的最大行,避免被仅含格式的空行误导
  • 放弃ws.append()整行追加的方式,改为定位到D列起始的单元格逐个赋值,确保写入位置准确
  • 逐单元格赋值的操作不会覆盖原有列的格式,完美保留Excel中的背景色、自动换行等设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:04:57