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

Openpyxl技术问题:跨工作表迁移指定行范围数据报错求助

解决ValueError: Cells cannot be copied from other worksheets问题

这个错误的核心原因很明确:你不能直接把来自一个工作表的单元格/列对象复制到另一个工作表——openpyxl里每个单元格对象都绑定到它所属的工作表,跨表操作单元格对象会触发这个报错。另外你的代码还存在循环逻辑的问题,没有按照需求把指定行范围对应到特定的目标工作表。

问题拆解

你的原始代码有两个关键问题:

  1. 跨表操作单元格对象:直接将ws(sheet0)的col或cell对象通过z.append(col)添加到其他工作表,这违反了openpyxl的对象绑定规则。
  2. 循环逻辑错误:你的代码会把每个行范围的数据追加到所有目标工作表里,而不是第一个范围到sheet1、第二个到sheet2、第三个到sheet3的对应关系。

修正后的实现方案

我们需要先建立行范围和目标工作表的一一对应,然后提取源单元格的值(而非单元格对象)写入目标工作表:

# 假设你已经通过openpyxl加载了工作簿,比如:
# from openpyxl import load_workbook
# wb = load_workbook("your_file.xlsx")

# 定义源工作表和目标工作表列表(顺序要和行范围对应)
source_ws = wb.worksheets[0]  # sheet0,数据源
target_sheets = wb.worksheets[1:]  # sheet1、sheet2、sheet3,按顺序对应三个行范围

# 定义行范围列表,每个元组对应(start_row, end_row)
row_ranges = [(1, 34), (34, 52), (52, 75)]

# 遍历每个行范围和对应的目标工作表
for (start_row, end_row), target_ws in zip(row_ranges, target_sheets):
    # 遍历源工作表的指定行(按行遍历更符合append的逻辑)
    for row in source_ws.iter_rows(min_row=start_row, max_row=end_row, min_col=1, max_col=source_ws.max_column):
        # 提取当前行所有单元格的值
        row_values = [cell.value for cell in row]
        # 将值追加到目标工作表的末尾
        target_ws.append(row_values)

# 记得保存工作簿
wb.save("updated_file.xlsx")

额外说明

如果需要复制单元格的样式(比如字体、颜色、边框等),上面的代码只复制了值,你需要额外处理样式:

for (start_row, end_row), target_ws in zip(row_ranges, target_sheets):
    # 获取目标工作表的起始行(追加到现有内容之后)
    target_start_row = target_ws.max_row + 1 if target_ws.max_row > 0 else 1
    
    for row_idx, row in enumerate(source_ws.iter_rows(min_row=start_row, max_row=end_row, min_col=1, max_col=source_ws.max_column), start=target_start_row):
        for col_idx, cell in enumerate(row, start=1):
            # 写入值
            target_ws.cell(row=row_idx, column=col_idx).value = cell.value
            # 复制样式
            target_ws.cell(row=row_idx, column=col_idx).font = cell.font
            target_ws.cell(row=row_idx, column=col_idx).fill = cell.fill
            # 可以根据需要添加更多样式属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 18:57:59