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

Python新手求助:Excel导入MySQL时跳过表头与最后一行

解决Excel导入MySQL时跳过表头和最后一行的问题

嘿,作为Python新手碰到这种细节问题太正常了,我帮你梳理下代码里的核心问题:

首先看你循环里的两处关键问题:

  1. cell方法调用缺失对象前缀
    你写的currency_Symbol = cell(r, 1).value会直接触发NameError,因为cell()是Excel工作表对象的专属方法,必须加上sheet.前缀才能正常调用,修改后应该是:

    currency_Symbol = sheet.cell(r, 1).value
    
  2. 笔误修正
    原代码里rowid = sheet.cell(r, o).value的o明显是笔误,应该改成数字索引0,不然会取到错误的列数据。

另外再确认下你的循环范围逻辑:range(1, sheet.nrows - 1)是完全正确的——

  • sheet.nrows是工作表的总行数,比如表中有10行数据,nrows就是10
  • range(1, sheet.nrows -1)会从索引1(跳过第0行的表头)遍历到索引sheet.nrows-2(自动跳过最后一行的索引sheet.nrows-1),完美匹配你“跳过表头和最后一行”的需求

给你一个修正后的完整代码片段参考:

# 假设已完成xlrd和MySQL连接的初始化
import xlrd
import mysql.connector

# 打开目标Excel文件
workbook = xlrd.open_workbook('your_excel_file.xlsx')
sheet = workbook.sheet_by_index(0)  # 取第一个工作表

# 建立MySQL连接
conn = mysql.connector.connect(
    host='你的数据库地址',
    user='数据库用户名',
    password='数据库密码',
    database='目标数据库名'
)
cursor = conn.cursor()

# 遍历目标数据行(跳过表头和最后一行)
for r in range(1, sheet.nrows - 1):
    rowid = sheet.cell(r, 0).value
    currency_Symbol = sheet.cell(r, 1).value
    # 按需继续读取其他列数据...
    
    # 插入MySQL的SQL语句,根据你的表结构调整字段
    sql = "INSERT INTO your_table_name (rowid, currency_symbol) VALUES (%s, %s)"
    val = (rowid, currency_Symbol)
    cursor.execute(sql, val)

# 提交事务并关闭连接
conn.commit()
cursor.close()
conn.close()

最后给你两个小提醒:

  • 如果Excel里存在空值,建议加个空值判断,比如rowid = sheet.cell(r, 0).value if sheet.cell(r,0).value != '' else None,避免插入数据库时出错
  • 如果你用的是.xlsx格式的Excel,要确保安装的是xlrd 2.x版本(1.x版本只支持.xls格式)

内容的提问来源于stack exchange,提问作者P.Costa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:56:50