问题描述
我是python的新手,遇到了一些绊脚石。我正在尝试在excel工作表列中搜索指定的值,以便可以对该行执行更多操作。我尝试了一些在网上找到的不同示例,但似乎无法使其正常工作。
TypeError: 'ReadOnlyWorksheet' object is not callable
from openpyxl import load_workbook
import openpyxl
def search_for_part(stock_id):
workbook = load_workbook(filename="1.xlsx",read_only=True)
sheet = workbook.active
for row in sheet("A"):
for cell in row:
if cell.value == stock_id:
print(sheet.cell)
v1 = "VEM004"
search_for_part(v1)
我认为("A")
中的for row in sheet("A"):
仅用于在A列中进行搜索,但是删除它会得到以下输出,这使我觉得自己更近了。
<bound method Worksheet.cell of <openpyxl.worksheet._read_only.ReadOnlyWorksheet object at 0x00000197A8314A48>>
解决方法
sheet
是一个工作表,因此当您说sheet(anything)
时,您试图“调用”它。并且工作表是不可调用的(如消息所示)。
您可能想要的是类似的东西
for row in sheet.iter_rows(values_only=True):
if row[0] == stock_id:
print(row[0])
,
在AMC和Chris的毅力和帮助下,我想出了以下内容,可以为我提供所需的输出。
def search_for_part(stock_id):
workbook = load_workbook(filename="1.xlsx",read_only=True)
sheet = workbook.active
for row in sheet.iter_rows():
for cell in row:
if cell.value == stock_id:
col_a = row[0]
col_b = row[1]
col_c = row[2]
return col_a.value,col_b.value,col_c.value