如何使用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
相关产品推荐
相关产品推荐

