从UserFrosting控制器返回.xls Excel文件并在Angular 2+中处理它的正确方法如下:
return $response->withHeader('Content-Type', 'application/vnd.ms-excel')
->withHeader('Content-Disposition', 'attachment;filename="filename.xls"')
->write($excelFile->save('php://output'));
这将设置响应的Content-Type为application/vnd.ms-excel,Content-Disposition为attachment,并将Excel文件内容写入响应。
import { HttpClient } from '@angular/common/http';
import * as XLSX from 'xlsx';
// ...
constructor(private http: HttpClient) {}
downloadExcelFile() {
this.http.get('url/to/your/userfrosting/controller', { responseType: 'blob' })
.subscribe(response => {
const fileReader = new FileReader();
fileReader.onload = (e: any) => {
const arrayBuffer = e.target.result;
const workbook = XLSX.read(arrayBuffer, { type: 'array' });
// 处理Excel文件,例如提取数据等
};
fileReader.readAsArrayBuffer(response);
});
}
在上述代码中,我们使用HttpClient发送GET请求来获取Excel文件的响应。设置responseType为'blob'以确保接收到的响应是二进制数据。然后,我们使用FileReader来读取响应的内容,并将其转换为ArrayBuffer。最后,使用XLSX库解析Excel文件并进行进一步处理。
请注意,这只是一个基本的示例,你可能需要根据你的具体需求进行适当的修改和调整。
推荐的腾讯云相关产品:腾讯云对象存储(COS) 腾讯云产品介绍链接地址:https://cloud.tencent.com/product/cos
领取专属 10元无门槛券
手把手带您无忧上云