如何将Workbook1整列(不含首行)复制到Workbook2并将首行保存至Workbook3?
复制Excel首行到新工作簿的实现方案
先明确你的需求:原本是把Workbook1整列复制到Workbook2(不含首行),现在需要复制Workbook1的首行到新创建的Workbook3中。先指出你现有代码的几个问题:
get_sheet_by_name是openpyxl已弃用的方法,新版本推荐直接用wb['Sheet1']获取工作表- 代码里把
wb2保存为test1.xlsx、wb1保存为test2.xlsx,会直接覆盖原文件,完全不符合需求 - 当前代码逻辑是整列复制到wb2,和生成wb3的需求不匹配
以下是满足需求的正确代码:
from openpyxl import load_workbook, Workbook # 加载源工作簿Workbook1 wb_source = load_workbook("test1.xlsx") ws_source = wb_source['Sheet1'] # 获取源工作表 # 创建新的工作簿Workbook3 wb_new = Workbook() ws_new = wb_new.active # 获取新工作簿默认工作表,也可改名:ws_new.title = "Sheet1" # 复制首行数据:遍历首行所有单元格 for col in range(1, ws_source.max_column + 1): ws_new.cell(row=1, column=col).value = ws_source.cell(row=1, column=col).value # 保存新工作簿 wb_new.save("test3.xlsx")
代码说明:
- 用
Workbook()创建全新工作簿,无需加载现有文件 - 遍历首行每一列,将源工作表首行对应单元格的值复制到新工作簿首行
- 最终保存为
test3.xlsx,不会修改原有的test1.xlsx和test2.xlsx
如果需要复制首行的格式(字体、颜色、列宽等),可以添加格式复制逻辑:
from openpyxl.styles import copy_style # 复制值的同时复制单元格样式 for col in range(1, ws_source.max_column + 1): source_cell = ws_source.cell(row=1, column=col) target_cell = ws_new.cell(row=1, column=col) target_cell.value = source_cell.value target_cell.style = copy_style(source_cell.style) # 复制列宽 for col in ws_source.columns: col_letter = col[0].column_letter ws_new.column_dimensions[col_letter].width = ws_source.column_dimensions[col_letter].width
内容的提问来源于stack exchange,提问作者mo_2324
相关产品推荐
相关产品推荐

