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

Python如何遍历Excel全量行数据 逐行构造payload发送API请求

问题根源

代码仅发送最后一行数据,是因为构造请求参数、发起POST请求的代码没有放在for循环的缩进块内:循环执行过程中只会逐次覆盖name/categ/brd/des/titl几个变量的值,循环结束后变量留存的就是最后一行的取值,后续请求逻辑自然只会提交最后一条数据。
pandas读取Excel后遍历行不需要预先硬编码行数,本身就支持动态适配任意长度的表格数据。

修复方案

把构造payload、发送请求的逻辑全部缩进放到for循环内部即可,同时建议增加简单的异常捕获和状态打印,方便排查每行数据的发送情况,参考代码如下:

import pandas as pd
import requests

# 读取Excel,默认自动读取第一个工作表(即你的Sheet1),自动适配任意行数
my_table = pd.read_excel("Myexcel.xlsx")

# 固定配置提前定义,不需要每次循环重复赋值
url = "替换为你的实际接口地址"
headers = {
    # 替换为你的实际请求头参数
    "Content-Type": "application/json"
}

# 逐行遍历,自动适配表格行数变化,无需手动指定行数
for idx, row in my_table.iterrows():
    # 提取当前行对应字段,做格式转换
    name = row["Name"]
    categ = str(int(row["CategoryId"]))
    brd = row["BrandName"]
    des = row["Description"]
    titl = row["Title"]

    # 构造当前行对应的请求参数
    payload = {
        "Name": name,
        "CategoryId": categ,
        "BrandName": brd,
        "Description": des,
        "Title": titl
    }

    # 发起请求,加异常捕获避免单行报错中断整个任务
    try:
        resp = requests.post(url, headers=headers, json=payload, timeout=10)
        resp_data = resp.json()
        print(f"第{idx+1}行发送成功,接口返回:{resp_data}")
    except Exception as e:
        print(f"第{idx+1}行发送失败,错误:{str(e)},对应数据:{payload}")
补充说明
  • 如果CategoryId列存在空值,直接转int会报错,可提前用my_table = my_table.dropna(subset=["CategoryId"])过滤无效行,或者在类型转换时增加单独的异常判断
  • 如果接口有请求频率限制,可在循环内导入time模块后加time.sleep(1)设置请求间隔,避免触发限流
  • 给请求加timeout参数可以避免单次请求无响应导致整个程序卡住

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:24:33