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

如何在openpyxl中将工作表对象添加到现有xlsx文档的新工作表

将openpyxl读取的工作表完整复制到现有Excel文档(保留格式)

你之前的实现只复制了单元格的值,导致背景色、合并单元格等格式丢失。要完整迁移工作表,必须同时复制格式相关的所有属性,以下是可行的代码方案:

完整复制工作表的工具函数

from openpyxl import load_workbook
from openpyxl.utils import get_column_letter

def copy_worksheet(source_ws, target_wb, new_sheet_name):
    # 在目标工作簿创建新工作表
    target_ws = target_wb.create_sheet(title=new_sheet_name)
    
    # 复制每个单元格的值与样式(背景色、字体、边框等)
    for row in source_ws.iter_rows():
        for cell in row:
            target_ws[cell.coordinate].value = cell.value
            target_ws[cell.coordinate]._style = cell._style
    
    # 复制合并单元格配置
    for merged_range in source_ws.merged_cells.ranges:
        target_ws.merge_cells(str(merged_range))
    
    # 复制行高
    for row_num in range(1, source_ws.max_row + 1):
        target_ws.row_dimensions[row_num].height = source_ws.row_dimensions[row_num].height
    
    # 复制列宽
    for col_num in range(1, source_ws.max_column + 1):
        col_letter = get_column_letter(col_num)
        target_ws.column_dimensions[col_letter].width = source_ws.column_dimensions[col_letter].width
    
    return target_ws

实际使用示例

结合你已读取的sheet_2对象,将其复制到现有Excel文档:

# 读取你要追加的现有工作簿
existing_wb = load_workbook("你的现有文档路径.xlsx")

# 执行工作表复制,指定新工作表名称
copy_worksheet(sheet_2, existing_wb, "新工作表")

# 保存修改后的工作簿
existing_wb.save("更新后的文档路径.xlsx")

关键说明

  • 你之前用for row in old_ws.values + ws2.append(row)的方式,仅提取了单元格的原始值,完全没有处理格式相关属性,这是格式丢失的核心原因。
  • 上述工具函数会完整复制源工作表的单元格值、样式、合并单元格、行高、列宽,确保格式与源表一致。

内容的提问来源于stack exchange,提问作者Allen.L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:35:26