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

使用Python脚本将Excel数据导入Jira时遇TypeError问题求助

问题分析与修复方案

错误原因

嘿,我来帮你拆解这个问题!你遇到的TypeError本质是只读模式下的工作表对象不支持用关键字参数调用cell()方法。

当你用read_only=True加载Excel文件时,wb['Sheet1']返回的是ReadOnlyWorksheet类的实例,它的cell()方法只能接受位置参数(先传行号,再传列号),而不是你代码里用的row=r, column=c这种关键字参数。Python把这些关键字参数当成了额外的参数,反而找不到第一个必须的工作表实例参数,所以抛出了这个“未绑定方法需要工作表实例作为第一个参数”的错误。

修复步骤

1. 修正核心问题:getCellValue函数

把cell()调用的关键字参数改成位置参数,这是解决当前报错的关键:

def getCellValue(worksheet, r, c):
    cell_value = worksheet.cell(r, c).value  # 去掉row=和column=,用位置参数传值
    if cell_value is None:
        print(f"Error: Empty Cell. Row {r} Col {c}")
        promp()
    return cell_value

2. 修复其他潜在问题

你的代码里还有几个小问题,不修复的话后续也会报错:

  • create_issue语句括号未闭合:最后少了一个右括号,会触发语法错误
  • 重复赋值:type变量被连续赋值两次,去掉重复的那行
  • raw_input在Python3中不存在:Python3统一用input(),把最后一行的raw_input改成input
  • 避免用内置函数名做变量名:比如sum是Python内置求和函数,换成sum_val更安全

修正后的关键代码片段

def getCellValue(worksheet, r, c):
    cell_value = worksheet.cell(r, c).value
    if cell_value is None:
        print(f"Error: Empty Cell. Row {r} Col {c}")
        promp()
    return cell_value

# ... 其他初始化代码保持不变 ...

for i in range (2, ws.max_row+1):
    pro = getCellValue(ws, i, 1)
    key = ws.cell(i, 2).value  # 这里也改成位置参数调用cell()
    parent_issue = jira.issue(key)
    parent = str(parent_issue.fields.summary)
    type = getCellValue(ws, i, 3)  # 去掉重复的type赋值行
    prename = ws.cell(i, 4).value
    taskname = ws.cell(i, 5).value
    child = prename + taskname
    prio = ws.cell(i, 6).value
    imp = ws.cell(i, 7).value
    confidence = getCellValue(ws, i, 8)
    team = getCellValue(ws, i, 9)
    person = ws.cell(i, 10).value
    time = ws.cell(i, 11).value
    desc = ws.cell(i, 12).value
    sum_val = prename + " - " + taskname  # 替换sum为sum_val,避免覆盖内置函数
    report = ws.cell(i, 13).value
    print(sum_val)
    # 修复create_issue的括号,调整格式让代码更易读
    issue = jira.create_issue(
        project=pro, 
        summary=sum_val, 
        description=desc, 
        issuetype=type, 
        assignee={'name': person}, 
        reporter={'name': report}, 
        timetracking={"originalEstimate": time,"remainingEstimate": time}, 
        customfield_11200={"value": team}, 
        customfield_12306={"value": confidence}, 
        customfield_11100={"value": imp}, 
        priority={'name': prio}
    )
    print("Successfully Created: "+ str(issue))
    print('Linking Child: ' + str(issue) + '\t to Parent: ' + key)
    jira.create_issue_link('Broken into', key, str(issue))
    print("SUCCESS\n")

print("\n\nDONE\t Total New Issues Created and Linked: " + str(i-1))
input("prompt: ")
input("Press Enter to Continue: ")  # 替换raw_input为input

额外提示

  • 只读模式适合加载大型Excel文件,速度更快,但功能受限;如果后续需要修改Excel内容,记得去掉read_only=True
  • 判断空值时,用is None比== None更可靠,这是Python的最佳实践

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 03:43:21