我用PHPExcel,把数据输出到excel并导出到本地,但每次都下载不到本地,出现一堆乱码,希望大神解答一下 5
代码是这么写的:$excel=newPHPExcel();ob_end_clean();header('Content-Type:application/vnd.ms-e...
代码是这么写的:
$excel = new PHPExcel();
ob_end_clean();
header('Content-Type: application/vnd.ms-excel,charset=UTF-8');
header('Content-Disposition: attachment;filename=1.xls');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$objWriter->save('php://output');
exit();
具体的乱码是图中这样的 展开
$excel = new PHPExcel();
ob_end_clean();
header('Content-Type: application/vnd.ms-excel,charset=UTF-8');
header('Content-Disposition: attachment;filename=1.xls');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$objWriter->save('php://output');
exit();
具体的乱码是图中这样的 展开
3个回答
展开全部
你指定的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");
追问
我把这段代码加进去了,也是出现一样的乱码,这是怎么回事啊?
追答
能把你将上面那段代码放上去后的给出来看下吗?只要有数据输出,有上面这些文件头,浏览器应该是要进行下载操作的.检查下你的代码里ob_end_clean()有没有放在那段文件头信息的下面了.如果你想清空下缓冲区,最好将这行代码提前些.
展开全部
$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);
//也不知道为什么下面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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询