我用PHPExcel,把数据输出到excel并导出到本地,但每次都下载不到本地,出现一堆乱码,希望大神解答一下

2025-05-17 18:17:30
推荐回答(3个)
回答1:

你指定的PHPExcel生成的是xls格式的文件。是一种电子表格格式,这种格式一般是用excel打开处理的。直接用文本方式显示就是乱码的。但为什么是直接输出这些乱而不是下载呢?是因为你没有给输出指定头信息告诉浏览器输出的内容不是直接显示而是供下载的,浏览器所以浏览器也不懂,它只好老老实实给输出来。你试着在上面那段代码前加上如下内容:

header("Cache-Control: public");
header("Pragma: public");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type:application/download");
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=你自己指定或生成文件名.xls");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

回答2:

$filename = $_SERVER['DOCUMENT_ROOT'].'/download/xxx.xls';
//也不知道为什么下面2个要一起用才OK,折腾4天,关键就在这吧
ob_end_clean();
ob_clean();
header("Cache-Control: public");
header( "Expires: 0" );
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename='.basename($filename));
header("Content-Type: application/vnd.ms-excel");
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename));
readfile($filename);

回答3:

请问最后是怎么处理实现的呢