как найти ячейку, содержащую определенный текст, с помощью python?

#python #openpyxl

Вопрос:

Я пытаюсь повторить файл xlsx и найти ячейку, содержащую название нашей компании, с помощью python. Файл состоит из 2 или более листов, и на каждом листе содержится информация о 6 компаниях. Каждая ячейка, которую я ищу, имеет образование, как показано ниже:

Ячейка F6 = 1-я(Company_A Company_B)

Ячейка G6 = 2-я(Company_C Company_D)

Ячейка H6 = 3-я(Company_E Company_F) и так далее.

Я хотел бы найти ячейку, содержащую Company_A. Я немного поработал над кодированием, но у меня возникли некоторые проблемы.

Кодирование, которое я могу выполнить, выглядит следующим образом:

 import openpyxl
bid = openpyxl.load_workbook('C:/Users/User/Desktop/bidding.xlsx', data_only=True)

for sheet in bid.worksheets:
    for row in sheet.iter_rows():
        for entry in row:
            if entry.value == '1ST(Company_A Company_B)':
                print(entry.offset(row=1).value)
                print(round(entry.offset(row=8).value/100,5))
 

Я могу найти нужное значение, но я хочу найти ячейку, не вводя все

Ответ №1:

Когда вы используете == скрипт, он проверяет, соответствует ли строка в ячейке именно этому. Вместо этого используйте in .

Ваш код должен быть:

 import openpyxl
bid = openpyxl.load_workbook('C:/Users/User/Desktop/bidding.xlsx', data_only=True)

for sheet in bid.worksheets:
    for row in sheet.iter_rows():
        for entry in row:
            try:
                if 'Company_A' in entry.value:
                    print(entry.offset(row=1).value)
                    print(round(entry.offset(row=8).value/100,5))

             except (AttributeError, TypeError):
                 continue
 

Комментарии:

1. Я изменил «==» на «в», но получил сообщение об ошибке, в котором говорится, что аргумент типа «ячейка» не может быть повторен.

2. @PeterJung Это ошибка, которая возникает, если проверка пытается проверить пустую ячейку (нет), я добавил простую попытку и, кроме того, должен сделать трюк, это быстрое и грязное исправление, хотя, но для простой вещи это должно сработать.