При разборе файла Excel возникает ошибка "Нет таких ключей: 'io.excel.zip.reader'". Ошибка
Я пытаюсь разобрать файл типа 'docx' в моем Django-приложении с помощью pandas, но сталкиваюсь с ошибкой "No such keys(s): 'io.excel.zip.reader'". Похоже, что проблема связана с тем, как читается файл, или с самим форматом файла. Я проверил, что файл действительно является файлом Excel с расширением .xlsx, тогда он работает нормально, но когда я добавляю оператор elif для типа файла 'docx', я получаю эту ошибку. Может ли кто-нибудь помочь мне понять, что может быть причиной этой ошибки и как ее решить? Ниже приведен фрагмент кода, который я использую:
import pandas as pd
import json
from docx import Document
if request.method == 'POST':
form = UserPermissionForm(request.POST, request.FILES)
if form.is_valid():
upload_template_instance = form.save()
template_file = upload_template_instance.template_master
# Check file extension to determine its type
if template_file.name.endswith('.xlsx'):
# Parse the Excel file using Pandas
df = pd.read_excel(template_file)
df.fillna('', inplace=True)
df.columns = ["" if 'Unnamed' in str(col) else col for col in df.columns]
columns = df.columns.tolist()
data = df.values.tolist()
elif template_file.name.endswith('.docx'):
# Parse the Word document using python-docx
doc = Document(template_file)
data = []
for paragraph in doc.paragraphs:
# Extract text from each paragraph
text = paragraph.text
# Split text into a list based on some delimiter, like tab or comma
row = text.split('\t') # You might need to adjust this based on your document structure
data.append(row)
# Remove empty rows
data = [row for row in data if any(cell.strip() for cell in row)]
columns = None # No columns in Word document
# Convert data to JSON
data_json = json.dumps(data)
return render(request, 'your_template.html', {'form': form, 'columns': columns, 'data': data})
Сначала я попробовал только чтение из excel, и все получилось, но когда я добавил оператор elif для другого типа файла, например word doc, он не позволяет мне читать и преобразовывать данные word в таблицу.