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 变量。
希望能够帮到您解决问题。如果对你有帮助,请采纳我的回答~
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})