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

如何使用openpyxl筛选第8列值为TRUE的行并复制至其他工作表?

用openpyxl实现按第8列筛选并复制行到另一个工作表

当然可以用openpyxl实现这个需求,你提供的示例代码存在几处问题(比如未定义函数、索引错误),下面是修正后的可运行代码及说明:

修正后的代码

# 筛选第8列值为"TRUE"的行并复制到目标工作表
from openpyxl import load_workbook

# 加载源工作簿和目标工作簿
wb_source = load_workbook('DataSource.xlsx')
wb_target = load_workbook('DataTarget.xlsx')

# 引用对应的工作表
sh_source = wb_source["sheet 1"]
sh_target = wb_target["sheet 2"]

# 遍历源工作表的所有行(注意:openpyxl中行和列的索引从0开始)
for row in sh_source.iter_rows(values_only=False):
    # 第8列的索引是7,检查其值是否为"TRUE"
    if row[7].value == "TRUE":
        # 将当前行的所有单元格值提取出来,追加到目标工作表
        row_values = [cell.value for cell in row]
        sh_target.append(row_values)

# 保存修改后的目标工作簿
wb_target.save("Filter Test.xlsx")

关键说明

  • 索引注意事项:Python是0索引体系,所以第8列对应的索引是7,原示例中用row[8]实际指向的是第9列,这是常见错误。
  • iter_rows参数:使用values_only=False可以保留单元格对象,方便获取值;如果只需要值,也可以设为True直接遍历值。
  • 列范围控制:如果不需要复制整行,只需要特定列范围(比如A到I列),可以修改row_values的生成逻辑,例如[cell.value for cell in row[:9]](A到I对应索引0到8)。
  • 工作簿加载:确保源文件DataSource.xlsx和目标文件DataTarget.xlsx存在于当前脚本的运行目录下,或者使用完整文件路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:25:19