gpt4 book ai didi

excel - Angular 7 - 使用 FileSaver.js 下载 Excel 文件不起作用

转载 作者:行者123 更新时间:2023-12-04 19:58:56 24 4
gpt4 key购买 nike

我正在向我的后端发送一个发布请求以接收 Excel 文件。我可以在 postman 中看到我的后端正在发送 Excel,但在 Angular 中,我无法使用 FileSaver.Js 下载它图书馆。有任何想法吗?

这是我的 html 标记:

<button (click)="excel()">Export Excel</button> 

这是我的服务类:
import { Component, OnInit } from '@angular/core';
import { DataService } from '../data.service';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import * as FileSaver from 'file-saver';
import 'rxjs';

@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {
constructor(private data: DataService , private formBuilder: FormBuilder ) { }

ngOnInit() {
}

excel() {
this.data.excel().toPromise()
.then(response => this.saveToFileSystem(response));
}

private saveToFileSystem(response) {
const contentDispositionHeader: string = response.headers.get('Content-Disposition');
const parts: string[] = contentDispositionHeader.split(';');
const filename = parts[1].split('=')[1];
const blob = new Blob([response._body], { type: 'text/plain' });

FileSaver.saveAs(blob, filename);
}
}

这是我请求后端的数据类方法:
excel() {
const headers = new HttpHeaders();
console.log("sentin")
headers.set('Content-Type', 'application/json; charset=utf-8');
return this.http.post(this.baseUrl + '/Excel', { headers: headers })
}

最佳答案

最后得到答案:

我应该做出这些改变:

  • 换方法saveFileSystem至:
    private saveToFileSystem(response) {
    const blob = new Blob([JSON.stringify(response.body)], { type: 'application/vnd.ms-excel;charset=utf-8' });
    FileSaver.saveAs(blob, "Report.xls");
    }
  • 将响应类型添加到我的 HttpPost像这样:
    { responseType: 'text' }
  • 关于excel - Angular 7 - 使用 FileSaver.js 下载 Excel 文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54966059/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com