Python xlrd читает данные с нескольких листов - PullRequest
0 голосов
/ 20 февраля 2019

Я записываю элементы столбцов Excel в списки.Поэтому мне нужно найти определенные значения в одном столбце и записать значения другого столбца, соответствующие им.В настоящее время это реализовано так:

import xlrd

    excel_data_file = xlrd.open_workbook('./testbook.xlsx')
    sheet = excel_data_file.sheet_by_index(0)

    ku_ind_lst = sheet.col_values(0)
    sys_name_lst = sheet.col_values(2)
for i in range(0, len(sys_name_lst)):
    if sys_name_lst[i] == 'xxx' or sys_name_lst[i] == 'yyy' or sys_name_lst[i] == 'zzz':
        b = sys_name_lst[i]
        c = ku_ind_lst[i]
        print(b)
        print(c)

Я изменил код, добавив чтение данных с двух листов:

import xlrd

excel_data_file = xlrd.open_workbook('./test.xls')

sheet_count = excel_data_file.nsheets
print(sheet_count)

sheets = {}
for nsh in range (0,sheet_count):
        sheet = excel_data_file.get_sheet(nsh)
        sheets[sheet.name] = sheet
ku_ind_lst = sheets.col_values(0)
sys_name_lst = sheets.col_values(2)

for i in range(0, len(sys_name_lst)):
    if sys_name_lst[i] == 'xxx' or sys_name_lst[i] == 'yyy' or sys_name_lst[i] == 'zzz':
        b = sys_name_lst[i]
        c = ku_ind_lst[i]
        print(b)
        print(c)

И я решил проверить, как это будет работать с xlsкоторый содержит два листа по 5000 строк каждый.Таким образом, появилась ошибка:

Файл "C: \ Program Files (x86) \ Python37-32 \ lib \ site-packages \ xlrd \ book.py", строка 699, в get_sheet поднять XLRDError («Невозможно загрузить листы после освобождения ресурсов.») Xlrd.biffh.XLRDError: Невозможно загрузить листы после освобождения ресурсов.

Итак, get_sheet не подходит для моей задачи?Можно ли использовать sheet_by_index для открытия нескольких листов из файла xls и как?

...