Python

Не открывает xlrd файлы выдаёт ошибку, что делать?

Короче пытаюсь решить задачу на пайтон:
Главный бухгалтер компании "Рога и копыта" случайно удалил ведомость с начисленной зарплатой. К счастью, у него сохранились расчётные листки всех сотрудников. Помогите по этим расчётным листкам восстановить зарплатную ведомость. Архив с расчётными листками доступен по ссылке https://stepik.org/media/attachments/lesson/245299/rogaikopyta.zip (вы можете скачать и распаковать его вручную или самостоятельно научиться делать это с помощью скрипта на Питоне).

Ведомость должна содержать 1000 строк, в каждой строке должно быть указано ФИО сотрудника и, через пробел, его зарплата. Сотрудники должны быть упорядочены по алфавиту.

Исходный код:
  from zipfile import ZipFile 
import urllib.request
import xlrd

url = 'https://stepik.org/media/attachments/lesson/245299/rogaikopyta.zip'

urllib.request.urlretrieve(url, 'zip_file')
res = {}

with ZipFile('zip_file') as f:
file_names = f.namelist()

for name in file_names:
f.extract(name)
rd = xlrd.open_workbook(name)
sheet = rd.sheet_by_index(0)
vals = sheet.row_values(1)
fio = vals[1]
salary = vals[3]
res[fio] = int(salary)

for name, salary in sorted(res.items()):
print(name, salary)
Как-бы не переписывал код везде выдает ошибку в xlrd, и я не могу понять в чем причина, загугли написали что надо откатить версию в консоли до 1.2.0 откатил версию в терминале через pip install xlrd==1.2.0 но все равно не помогло, и везде выдает одну и ту же ошибку:
 Traceback (most recent call last): 
File "C:\Users\Мой_компьютер\PycharmProjects\pytDRL\main.py", line 17, in
rd = xlrd.open_workbook(name)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Мой_компьютер\PycharmProjects\pytDRL\venv\Lib\site-packages\xlrd\__init__.py", line 170, in open_workbook
raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
xlrd.biffh.XLRDError: Excel xlsx file; not supported
Короче ноль идей чё делать, мне просто нужно архив с xlsx файлами преобразовать в один текст в 1000 строк, в каждой строке должно быть указано ФИО сотрудника и, через пробел, его зарплата. Сотрудники должны быть упорядочены по алфавиту.

Если у кого есть идей как это реализовать пишите...
NM
Nurzhan Magzawov
371
Ошибка возникает из-за того, что последняя версия библиотеки xlrd (2.0.1) поддерживает только файлы формата .xls. В вашем случае решением может быть:
1. Убедитесь, что вы используете последнюю версию библиотеки Pandas, по крайней мере 1.0.1, а лучше самую последнюю версию.
2. Установите библиотеку openpyxl.
3. Измените код для чтения файла с помощью Pandas на следующий:
 import pandas as pd 
df1 = pd.read_excel(os.path.join(APP_PATH, "Data", "aug_latest.xlsm"), engine='openpyxl')
Сирожиддин Фахриддинов
Сирожиддин Фахриддинов
25 860
Лучший ответ
Если вы получаете ошибку при попытке открыть файл Excel с помощью модуля xlrd, возможно, у вас нет необходимых библиотек или зависимостей для работы с этим модулем. Вот несколько шагов, которые могут помочь вам исправить эту проблему:

Убедитесь, что у вас установлены необходимые библиотеки для работы с xlrd. Вы можете проверить это, выполнив следующую команду в командной строке:
pip list | grep xlrd
Если xlrd не найден в списке установленных библиотек, вам нужно установить его с помощью pip:
pip install xlrd
Убедитесь, что ваш код правильно импортирует модуль xlrd:
import xlrd
Проверьте, что файл Excel, который вы пытаетесь открыть, является корректным файлом Excel. Убедитесь, что формат файла соответствует тому, который поддерживает модуль xlrd.
Попробуйте использовать другой модуль для чтения Excel файлов, например openpyxl или pandas.
Если все вышеперечисленные шаги не помогли, попробуйте обратиться к документации xlrd для получения дополнительной информации о том, как правильно использовать этот модуль.
HH
Huja Hamidov
4 524
Nurzhan Magzawov Всё оказалось проще надо было просто откатить xlrd до ещё более ранней версии, откатил до 1.2.0 и сработало.