如何在angular 2中下载Excel文件

如何在angular 2中下载Excel文件,excel,angular,download,response,Excel,Angular,Download,Response,我正在学习Angular 2,并试图通过使用web api从sql server表中获取客户数据来下载Angular 2中的Excel文件 在谷歌搜索后,我发现了一些代码,但使用这些代码我可以下载,但它不包含正确的数据和文件名也有一些guid格式 以下是我使用的代码: 组件 GetRemindersData() { var Flag="ALL_SPOTCHECK_RECORDS"; this.httpService.GetRemindersData(Flag).subscribe

我正在学习Angular 2,并试图通过使用web api从sql server表中获取客户数据来下载Angular 2中的Excel文件

在谷歌搜索后,我发现了一些代码,但使用这些代码我可以下载,但它不包含正确的数据和文件名也有一些guid格式

以下是我使用的代码:

组件

GetRemindersData()
{
    var Flag="ALL_SPOTCHECK_RECORDS";
    this.httpService.GetRemindersData(Flag).subscribe(
        data=>this.downloadFile(JSON.stringify(data[1])),
        error => console.log("Error downloading the file."),
        () => console.info("OK"));
}

downloadFile(data:any){
    console.log(data);
    var blob = new Blob([data], { type: 'application/vnd.ms-excel' });
    var url= window.URL.createObjectURL(blob);
    window.open(url);
}
服务.ts

public GetRemindersData(Flag:string){
    var GetRemindersData_URL:string = 'http://localhost:5000/api/RemindersData/?Flag='+Flag;
    return this.http.get(`${GetRemindersData_URL}`)
                .map((res:Response) => res.json())
                .catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}

服务返回json,它必须返回blob类型,您可以这样做

return this.http.get(url,{responseType: ResponseContentType.Blob }).map(
    (res) => {
        return new Blob([res.blob()], { type: 'application/vnd.ms-excel' })
    })

另请看这篇文章

您可以根据显示的数据在前面创建excel文件。看看答案,看看它是如何完成的。在遵循上面的参考之后,我遇到了类似“找不到模块“xlsx”的声明文件”这样的错误/node_modules/xlsx/xlsx.js“隐式”有一个“any”类型。我有一个实现
xlsx
的角度演示应用程序。克隆它,看看它是如何工作的。谢谢分享链接。事实上,我没有使用angualr cli项目,但即使我尝试基于您的代码,我还是遇到了类似“找不到模块xlsx的声明文件”这样的错误。再次感谢您共享链接,并且angular cli项目中的代码工作正常。谢谢。在使用上述代码后,我得到了一个未定义的字符串值excel文件。你能不能后端响应是json对象数组你需要给出文件响应,这样只有我们才能处理blob响应