gpt4 book ai didi

php - 无法使用phpspreadsheet下载excel文件

转载 作者:太空狗 更新时间:2023-10-29 18:35:49 32 4
gpt4 key购买 nike

我将 angular 6 与 PHP 一起使用,我想使用 phpspreadsheet 下载 excel 文件。

当我使用默认代码时

$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');

文件生成到 php 文件夹而无需下载并且工作正常。现在我想下载它并选择保存位置。

我使用我在文档中找到的代码

// redirect output to client browser
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="myfile.xlsx"');
header('Cache-Control: max-age=0');

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');

但是文件没有下载,我在浏览器中看到了这个:enter image description here

在我的 PHP 文件的开头有

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

我在 Angular 中的服务是:

export_excel(localUserid, date, projectid) {
return this.http.post(this.apiUrl, {localUserid, date, projectid},
{
headers : {
'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
}
})
}

我将一些值传递给 PHP。我试图更改 Angular 中的 header ,但没有任何效果。有谁知道如何解决它?谢谢。

最佳答案

在尝试了许多不同的解决方案之后,我找到了使用 Angular 6PHPSpreadsheet 下载 excel 文件的正确方法。

首先,在 PHP 中,我必须将文件保存在本地:

$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
$file_name = 'D:\wamp64\www\angular6-app\client\download_excel\hello_world.xlsx'; //it depends where you want to save the excel
$writer->save($file_name);
if(file_exists($file_name)){
echo json_encode(array('error'=>false, 'export_path'=>'download_excel/' . 'hello_world.xlsx')); //my angular project is at D:\wamp64\www\angular6-app\client\
}

然后,我更改了我的 excel.service.ts:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http'

interface excel {
error: any,
export_path: any
}

@Injectable({
providedIn: 'root'
})
export class ExcelService {

apiUrl = "http://localhost/angular6-app/api/exportexcel.php";

constructor(private http: HttpClient) { }

export_excel(localUserid, date, projectid) {
return this.http.post<excel>(this.apiUrl, {localUserid, date, projectid},
{
headers : {
'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
}
})
}
}

最后在我的 Angular 组件中,如果一切正常,我将用户重定向到我的导出路径:

this.srv.export_excel(localUserid, date, projectid).subscribe((data) => 
{
location.href = data.export_path;
}

现在我已经在我的下载 文件夹中下载了 excel。

关于php - 无法使用phpspreadsheet下载excel文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54504325/

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