При загрузке xls файла из кода загрузки django, файл не открывается, он показывает поврежденным

Вот мой код для загрузки xls с помощью python (Django)

views.py

def downloadfile(request, filename=''):
  if filename != '':
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    filename = 'SampleExcel.xls'
    filepath = BASE_DIR + "\SampleExcel\SampleExcel.xls"
    path = open(filepath, encoding='cp437')
    mime_type, _ = mimetypes.guess_type(filepath)
    response = HttpResponse(path, content_type=mime_type)
    response['Content-Disposition'] = "attachment; filename=%s" % filename
    return response
  else:
    return HttpResponseRedirect("adduser", {})

С помощью этого кода я могу правильно скачать файл, но при открытии файла он выдает ошибку. Прилагаю скриншот ошибки.

enter image description here

Я пробовал этот код для решения,

if filename != '':
  BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  filename = 'SampleExcel.xls'
  filepath = BASE_DIR + "\SampleExcel\SampleExcel.xls" 
  return FileResponse(open(filepath, 'rb') , True, filename)
else:
  return HttpResponseRedirect("adduser", {})

Также не работает, выдает ошибку 'TypeError at /downloadfile/SampleExcel.xls HTTP status code must be an integer.", и он даже не загружается.

Пожалуйста, помогите мне. Я застрял здесь последние 3 дня.

Note: I need to download xls file only, as after downloading it I have to perform import functionality with that downloaded xls file. I can not change xls to xlsx.

Тот FileResponse будет работать, проблема в том, что вы не задаете правильные аргументы ключевых слов.

response = FileResponse(path, as_attachment=True, filename=filename)

Это будет работать для вас.

Вернуться на верх