使用phpspreadsheet创建xlsx文件后,使用readfile强制下载会产生错误的文件
我正在用PhpSpreadsheet创建一个xlsx文件,它工作正常,但有一个奇怪的beaviour。 创建存储在服务器中的excel文件后,如果我尝试使用以下代码强制下载:使用phpspreadsheet创建xlsx文件后,使用readfile强制下载会产生错误的文件,php,excel,spreadsheet,readfile,Php,Excel,Spreadsheet,Readfile,我正在用PhpSpreadsheet创建一个xlsx文件,它工作正常,但有一个奇怪的beaviour。 创建存储在服务器中的excel文件后,如果我尝试使用以下代码强制下载: header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment; filename=newfile.xlsx'); readfile ($file); 文件格式不正确,无法在excel中打开。 但如果我下载
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename=newfile.xlsx');
readfile ($file);
文件格式不正确,无法在excel中打开。
但如果我下载它与html链接,我可以打开它
该文件的工作表由csv文件组成
我正在使用以下代码:
$spreadsheet =\PhpOffice\PhpSpreadsheet\IOFactory::load("./spreadsheet/example.xlsx"); // void file
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
$reader->setDelimiter(';');
$reader->setEnclosure('');
$reader->setSheetIndex(0);
$reader->loadIntoExisting("./spreadsheet/temp.csv", $spreadsheet); // csv file created before
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, "Xlsx");
$writer->save("./spreadsheet/newfile.xlsx");
现在,用readfile强制的这个文件(newfile.xlsx)的格式不正确。但是,如果我创建一个链接并下载它,它是完美的
这是使用readfile下载的文件的内容:
它从csv数据开始,然后是excel文件
另一个是使用链接下载的相同文件:
这是一个正确的xlsx文件,我可以用excel打开它
有人能帮我找到一个解决方案来强制下载而不是创建链接吗
多谢各位