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

如何使用openpyxl合并两个Excel文件并保留封面格式?

使用openpyxl合并Excel文件并保留封面格式

要实现合并两个Excel文件(保留封面格式),你当前的代码仅复制了单元格值,没有处理格式信息。以下是两种可行的解决方案,优先推荐使用官方的工作表复制方法,高效且完整保留格式。

方案一:直接复制整个工作表(推荐)

openpyxl提供的copy_worksheet方法可以完整复制工作表的所有内容和格式,包括单元格样式、字体、颜色、行高列宽、合并单元格等,无需逐单元格处理。

import openpyxl as op

# 加载两个源工作簿
cover_wb = op.load_workbook(r"C:\Users\coversheet.xlsx")
data_wb = op.load_workbook(r"C:\Users\datatable.xlsx")

# 创建目标工作簿,删除默认的空白工作表
dest_wb = op.Workbook()
if "Sheet" in dest_wb.sheetnames:
    dest_wb.remove(dest_wb["Sheet"])

# 复制封面工作表到目标工作簿,并设置名称
cover_source = cover_wb.active
dest_wb.copy_worksheet(cover_source).title = "Cover Sheet"

# 复制数据表格工作表到目标工作簿,并设置名称
data_source = data_wb.active
dest_wb.copy_worksheet(data_source).title = "Data Table"

# 保存合并后的文件
dest_wb.save(r"C:\Users\merged_file.xlsx")

# 关闭所有工作簿
cover_wb.close()
data_wb.close()
dest_wb.close()

关键说明

  • 如果源工作簿有多个工作表,可直接指定工作表名称,比如cover_wb["封面"]代替cover_wb.active。
  • copy_worksheet会保留原工作表的所有格式设置,是最省心的实现方式。

方案二:逐单元格复制内容与格式(自定义场景)

如果需要对复制过程做自定义处理,可以手动复制单元格值、样式、行高列宽和合并单元格:

import openpyxl as op
from openpyxl import Workbook

dest_wb = Workbook()
# 删除默认空白工作表
dest_wb.remove(dest_wb["Sheet"])
dest_ws = dest_wb.create_sheet("Cover Sheet")

source_wb = op.load_workbook(r"C:\Users\coversheet.xlsx")
source_sheet = source_wb.active

# 复制单元格内容与样式
for row in source_sheet.rows:
    for cell in row:
        dest_cell = dest_ws[cell.coordinate]
        dest_cell.value = cell.value
        # 复制单元格样式
        dest_cell._style = cell._style

# 复制行高
for row_num in range(1, source_sheet.max_row + 1):
    dest_ws.row_dimensions[row_num].height = source_sheet.row_dimensions[row_num].height

# 复制列宽
for col_num in range(1, source_sheet.max_column + 1):
    col_letter = op.utils.get_column_letter(col_num)
    dest_ws.column_dimensions[col_letter].width = source_sheet.column_dimensions[col_letter].width

# 复制合并单元格
for merge_range in source_sheet.merged_cells.ranges:
    dest_ws.merge_cells(str(merge_range))

# 保存文件
dest_wb.save(r"C:\Users\test.xlsx")

# 关闭工作簿
dest_wb.close()
source_wb.close()

关键说明

  • 手动复制需要处理样式、行高列宽、合并单元格等多个维度,适合需要自定义修改格式的场景,但代码量较大。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:55:25