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

求助:如何用其他方法迭代Excel文件中的列表?附openpyxl代码

迭代Excel文件列表的多种实现方法

你给出的openpyxl代码存在逻辑问题:equipe[cell]里的cell是单元格对象,不能直接作为列表索引,需用cell.value获取单元格内容。以下是修正后的代码,以及其他几种常用的实现方案:

一、修正后的openpyxl实现

场景1:将列表写入Excel的A列

from openpyxl import load_workbook

wb = load_workbook("italian_team.xlsx")
ws = wb.active

equipe = ["Juventus", "Ac Milan", "Torino", "Pescara", "As Roma", "Genoa", "Napoli"]

# 遍历列表,写入A列对应行(行号从1开始)
for idx, team in enumerate(equipe, start=1):
    ws[f"A{idx}"] = team

wb.save("italian_team.xlsx")

场景2:读取A列内容并与列表匹配

from openpyxl import load_workbook

wb = load_workbook("italian_team.xlsx")
ws = wb.active

equipe = ["Juventus", "Ac Milan", "Torino", "Pescara", "As Roma", "Genoa", "Napoli"]

# 遍历A列单元格,过滤空值并匹配列表
for cell in ws["A"]:
    if cell.value and cell.value in equipe:
        print(f"找到匹配球队:{cell.value}")

wb.save("italian_team.xlsx")

二、使用pandas实现(简洁高效,适合批量操作)

pandas处理表格类数据优势明显,代码更简洁:

import pandas as pd

# 读取Excel文件
df = pd.read_excel("italian_team.xlsx")

equipe = ["Juventus", "Ac Milan", "Torino", "Pescara", "As Roma", "Genoa", "Napoli"]

# 迭代A列内容并匹配列表
for value in df['A'].dropna():
    if value in equipe:
        print(f"匹配到:{value}")

# 将列表写入A列并保存
df['A'] = equipe
df.to_excel("italian_team.xlsx", index=False)

三、使用xlrd/xlwt实现(兼容旧版.xls格式)

如果需要处理.xls格式文件,可使用这两个库:

import xlrd
import xlwt
from xlutils.copy import copy

# 读取旧版Excel文件
rb = xlrd.open_workbook("italian_team.xls")
wb = copy(rb)
ws = wb.get_sheet(0)

equipe = ["Juventus", "Ac Milan", "Torino", "Pescara", "As Roma", "Genoa", "Napoli"]

# 写入A列(行索引从0开始)
for idx, team in enumerate(equipe):
    ws.write(idx, 0, team)

wb.save("italian_team.xls")

# 读取A列内容并匹配
for row in rb.sheet_by_index(0).col_values(0):
    if row in equipe:
        print(f"找到匹配:{row}")

四、转CSV后用内置csv模块处理

若Excel可另存为CSV格式,用内置模块更轻量:

import csv

equipe = ["Juventus", "Ac Milan", "Torino", "Pescara", "As Roma", "Genoa", "Napoli"]

# 读取CSV文件并匹配列表
with open("italian_team.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        if row and row[0] in equipe:
            print(f"匹配成功:{row[0]}")

# 将列表写入CSV文件
with open("italian_team.csv", "w", encoding="utf-8", newline="") as f:
    writer = csv.writer(f)
    for team in equipe:
        writer.writerow([team])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:20:31