Использование модуля XLRD для поиска строки в импортированном Excel-файле

1

У меня есть файл excel размером около 1000 строк и шириной 25 колонок.

Я хочу создать скрипт, который просматривает excel файл на основе пользовательского ввода. (имена в этом случае)

Мой текущий код выглядит следующим образом:

import xlrd
file_location =r"C:\Users\extoskben\Desktop\Datorer.xlsx"
workbook = xlrd.open_workbook(file_location)
sheet = workbook.sheet_by_index(0)
User = input("What the users name?:   ")

Я хочу, чтобы код читался из excel файла и печатал результат из всех столбцов на основе имени, которое оно соответствует.

РЕДАКТИРОВАТЬ:

Структура файла excel:

   [Name         ] [x] [x] [x] [Serialnumber] [x] [x] [   Model    ]
[1] Oskar Beneke    x   x   x   123456789      x   x  Thinkpad t470
[2] Example name    x   x   x   987654321      x   x  Thinkpad t470s

Я хотел бы знать, как я могу распечатать результаты только из строк 1 5 и 8 и оставить "X" из моей печати.

  • 1
    Как ваши данные структурированы? Например, есть ли имена в первом столбце каждой строки? Это слепое предположение. Если вы предоставите более подробную информацию, вам будет легче ответить, поэтому у вас будет больше шансов получить ответы.
  • 0
    Здравствуйте, каждый столбец читается следующим образом: Имя, Модель, Имя пользователя, Серийный номер и т. Д., И каждая строка под ним содержит информацию в каждом поле. Я знаю, как конкретно выбрать, из какой строки я хочу получить информацию, но ввод и получение информации из того, что я ответил, в части, в которой я не уверен.
Показать ещё 2 комментария
Теги:
excel
xlrd

1 ответ

0
Лучший ответ

Этот код делает то, что вы хотите:

import xlrd
file_location =r"C:\Users\extoskben\Desktop\Datorer.xlsx"
workbook = xlrd.open_workbook(file_location)
sheet = workbook.sheet_by_index(0)
User = input("What the users name?:   ")

for row in range(sheet.nrows):  # Iterate over every rows of the file
    if User == sheet.cell_value(row, 0):  # If the user name match the input
        for col in range(sheet.row_len(row)):  # Iterate over every columns of the cell
            print(str(sheet.cell_value(row, col)))  # Print the value of the cells.

РЕДАКТИРОВАТЬ :

Если вы хотите напечатать только определенные столбцы (первый, пятый и третий в этом примере) данных строк, вы можете использовать эту версию цикла for:

columns_to_output = [0, 4, 7]  # List of columns to ouptput (starting with '0' for first column index)
for row in range(sheet.nrows):  # Iterate over every rows of the file
    if User == sheet.cell_value(row, 0):  # If the user name match the input
        for col in columns_to_output:  # Iterate over the column to output list
            print(str(sheet.cell_value(row, col)))  # Printing the cell at given column in the row.
  • 0
    Я предположил, что «я хочу, чтобы код [...] печатал результат сопоставления всех строк», чтобы означать, что вы хотите напечатать все значения в совпадающих строках.
  • 0
    Спасибо за ваш ответ, возможно, я ошибся здесь. По сути, я хочу найти имя, например Оскара Бенеке, мое имя. Серийный номер находится в строке 3 в Excel, а мое имя в столбце 500. Если бы мне нужно было ввести Oskar Beneke во ввод, я хочу, чтобы он напечатал мой серийный номер, мне жаль, если я затрудняю, я совершенно новый в этот.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню