Загрузка файлов Excel с помощью Django и Angular2

У меня есть проект, в котором я сохраняю файлы в папке SMB и использую Django для обратной стороны и Angular 2 для лицевой стороны. Мне удалось загрузить файлы .csv, но когда файл .xls загружен, он поврежден. Строки в файле выглядят следующим образом:

Admin-Гришэм
Ba == О'х <* 8X @ "1Arial1Arial1Arial1Arial1? Arial1Arial1 $ Arial1Arial1Calibri1

Это мой файл views.py:

'''Download file''' def get(self, request, file_name): bicloudreposervice = BiCloudRepoService() file_obj = bicloudreposervice.get_user_file(request.user.email, file_name) file_path = file_obj.name with open(file_path, 'rb') as tmp: if 'xls' in file_name: resp = HttpResponse(tmp, content_type='application/vnd.ms-excel;charset=UTF-8') else: resp = HttpResponse(tmp, content_type='application/text;charset=UTF-8') resp['Content-Disposition'] = "attachment; filename=%s" % file_name self.logger.debug('Downloading file') return resp 

Соответствующая функция в файле службы в машинописном виде выглядит следующим образом:

  downloadFile(fileName: string){ let headers = this.headers; let options = new RequestOptions({ headers: headers }); return this.http.get(this.connectorsUrl+'download-file/' + fileName + '/', options) .map(res => res) .catch(this.utils.handleError); } 

И файл компонента:

  import * as FileSaver from "file-saver"; ... downloadFile(name){ this.connectorsService.downloadFile(name).subscribe( res => {this.successDownloadFile(res, name);}, error => this.errorMessage = <any>error, ()=> {}); } successDownloadFile(res: any, name: String){ this.showLoader = false; let blob; blob = new Blob([res._body], {type: 'application/vnd.ms-excel'}); FileSaver.saveAs(blob, name.toString()); } 

Соответствующий html-файл:

 ... <div (click)="downloadFile(file.name)"> <i class="material-icons">file_download</i> </div> ... 

Я использую внешнюю библиотеку FileSaver, но я также попытался создать объект URL из Blob и window.open в Angular, но файл по-прежнему выглядит одинаково. Я пробовал content_type='application/vnd.ms-excel;charset=UTF-8' в views.py, а также {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}); при создании Blob in Angular.

Что я могу делать неправильно? Может быть, я должен обрабатывать файл по-разному в Django? Спасибо заранее за вашу помощь.

Interesting Posts

R: аргумент соответствует нескольким формальным аргументам

Извлечение строк по определенному значению ячейки в Excel

Как сделать переменную местоположения в vba?

Шаблоны Word / Excel, которые могут захватывать информацию из базы данных

Excel сложная многостолбцовая и многострочная конкатенация с использованием vba

Превращение содержимого из Excel в Drupal

Linq: существует ли какой-либо конкретный способ запуска запроса?

Разница между COUNTIF (диапазон, «*») и {SUM (ISTEXT (диапазон) * 1)}

Excel VBA – как импортировать текст с веб-страницы в одну ячейку

Вставить разрыв строки в обернутой ячейке по коду

Получать имена столбцов из файла excel определенного листа с использованием c # с OleDbConnection

Как сохранить числовые форматы при вставке данных в рабочую книгу xlsx через openxlsx writeData ()

VBscript для чтения excel – 1. Как получить количество строк для определенного столбца, 2 – чтобы получить количество столбцов определенной строки

Импорт данных из .csv в Excel-документ с использованием VBA

Как сохранить повторяющийся идентификатор повторяющейся строки строки в excel

Давайте будем гением компьютера.