关于#python#TypeError: 'Sheet' object is not callable报错的问题,如何解决?

img


    while i1 <= nrows:
        while i2 <= ncolumns:
            z_l1 = l_zd[i2]
            print(z_l1, i2)
            sht = xl.sheets.active
            print(sht.name)
            value1 = sht(f'{z_l1}{i2}').value
            # SQL 插入语句
            sql = """INSERT INTO py_xl_sql({})
                     VALUES ({})""".format(z_l1, value1)

这个问题怎么解啊,求指教

根据您提供的代码和错误信息,我猜测您是想通过调用 sht() 方法来获取 Excel 表格中某个单元格的值,但是出现了 "TypeError: 'Sheet' object is not callable" 的错误。

这个错误提示意味着您尝试将一个不可调用(不是函数或方法)的对象作为函数或方法来使用,例如:

some_object()  # some_object 不可调用,会报错 TypeError: 'SomeType' object is not callable

在您的代码中,sht 是一个代表当前激活的工作表的对象,它不是一个函数或方法,所以不能像函数一样调用它去获取某个单元格的值。 如果你想要获取单元格的值,则应该使用以下方式来实现:

value1 = sht[f'{z_l1}{i2}'].value

这样可以使用工作表对象的索引器 [] 来访问指定单元格的值。

其中,sht 是一个代表当前激活工作表的对象,[f'{z_l1}{i2}'] 表示在工作表中通过字符串索引指定一个单元格,比如 'A1' 或者 'B2'。这里通过字符串的方式来确定要获取的单元格,括号中的字符串由两部分组成,即列名和行数(比如 'A1' 中的 A 是列名,1 是行数),它们分别由变量 z_l1 和 i2 提供。

例如,如果 z_l1 的值为 'B',i2 的值为 3,那么这行代码实际上的意思就是获取工作表中 B3 单元格的值,然后将这个值赋给 value1 变量。

希望能够帮到您解决问题。如果对你有帮助,请采纳我的回答~

  • 这篇博客: Python网络爬虫识记中的 Sheet相关的操作: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • workbook = xlrd.open_workbook("成绩表.xlsx")
    
    # 获取所有的sheet名字
    print(workbook.sheet_names())
    
    # 根据索引获取指定的sheet对象
    sheet = workbook.sheet_by_index(1)
    print(sheet.name)
    
    # 根据名称获取指定的sheet对象
    sheet = workbook.sheet_by_name("2班")
    print(sheet.name)
    
    # 获取所有的sheet对象
    sheets = workbook.sheets()
    for sheet in sheets:
        print(sheet.name)
    
    # 获取指定sheet的行数和列数
    sheet = workbook.sheet_by_index(0)
    print({"rows":sheet.nrows,"cols":sheet.ncols})