Python-openpyxl搜索字符串-对象不可调用

问题描述

我是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