Панды: ошибка XLDR при чтении файла xls с URL - PullRequest
0 голосов
/ 15 марта 2019

Я получаю сообщение об ошибке при чтении файла XLS, как указано ниже

**XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b'\x08jstanle'**

Я испробовал различные решения, но в итоге мне не повезло, другие инструменты, такие как xlrd, pyexcel, но все еще сталкивались с этой ошибкой. Надеюсь, у кого-то есть решение этой проблемы. Также я попытался прочитать его как необработанный файл, используя библиотеку pythons io но проблема в том, что в файле несколько листов, последовательность должна быть сохранена

Спасибо заранее Ваше хорошее здоровье

1 Ответ

2 голосов
/ 15 марта 2019

Для этого есть две возможные причины:

1). Файл, полученный с URL-адреса источника, не соответствует формату, указанному в расширении файла:

2) Файлы .XLS зашифрованы, если вы явно применяете пароль рабочей книги, а также если вы защищаете паролем некоторые элементы рабочей таблицы.Таким образом, возможно иметь зашифрованный файл XLS, даже если вам не нужен пароль для его открытия.

Если у вас есть проблема номер один, у вас есть решение, откройте рабочую книгу и сохраните ее какподдерживаемый формат.

file1 = io.open(filename, "r", encoding="utf-8")
data = file1.readlines()
# Creating a workbook object
xldoc = Workbook()
# Adding a sheet to the workbook object
sheet = xldoc.add_sheet("Sheet1", cell_overwrite_ok=True)
# Iterating and saving the data to sheet
for i, row in enumerate(data):
    # Two things are done here
    # Removeing the '\n' which comes while reading the file using io.open
    # Getting the values after splitting using '\t'
    for j, val in enumerate(row.replace('\n', '').split('\t')):
        sheet.write(i, j, val)

# Saving the file as an excel file
xldoc.save('myexcel.xls')

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

import pandas as pd
df_list = pd.read_html('filename.xlsx')
df = pd.DataFrame(df_list[0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...