Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用phpspreadsheet创建xlsx文件后,使用readfile强制下载会产生错误的文件_Php_Excel_Spreadsheet_Readfile - Fatal编程技术网

使用phpspreadsheet创建xlsx文件后,使用readfile强制下载会产生错误的文件

使用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中打开。 但如果我下载

我正在用PhpSpreadsheet创建一个xlsx文件,它工作正常,但有一个奇怪的beaviour。 创建存储在服务器中的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打开它

有人能帮我找到一个解决方案来强制下载而不是创建链接吗

多谢各位