phpExcel导出, 在本地正常,在服务器乱码

天台的云 2015-09-02 03:40:46
如题,在服务器运行时....

重复一下,在本地运行是正常的,放上服务就成这样了,代码如下。。。

$excel=new \PHPExcel();
do{
$url='http://www.哪个好人来答下.com';

$content='';
$content=file_get_contents($url);
if($content['status']==0){
$data=$content['results'];

$head=array();

//获取表头值
for($i=0;$i<10;$i++){
$tmp=array_keys($data[$i]);
foreach($tmp as $t){
if(!in_array($t,$head)){
array_push($head,$t);
}
}
}

$A=65; //A的ASCII值
$col=array();
for($i=0;$i<count($head);$i++){ //制作列值
array_push($col,chr($A++));
}
for($i=0;$i<count($head);$i++){ //制作表头
$excel->getActiveSheet()->setCellValue($col[$i].'1',$head[$i]);
}
}
foreach($data as $key=>$val){
for($i=0;$i<count($head);$i++){

$excel->getActiveSheet()->setCellValue($col[$i].$i,$row[$head[$i]]);

}
}

}
$page++;
}while($pageCount>=$page);
$excel->getActiveSheet()->setTitle($title);
$excel->setActiveSheetIndex(0);

$writer = \PHPExcel_IOFactory::createWriter($excel, 'Excel5');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$fileName.'.xls"');
header('Cache-Control: max-age=0');

$writer->save('php://output');

}
...全文
945 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
子龙烜 2019-01-26
  • 打赏
  • 举报
回复
在用悟空crm时,在windows环境导出订单可用,在linux环境不可用,但商机,客户,任务等其他的导出的功能都可用,只有订单管理的会乱码
jiechengyang 2017-09-09
  • 打赏
  • 举报
回复
我这个更奇怪,前段时间客户使用都问题,我代码也没改过。今天突然客户打电话说导出来的数据乱码了。我马上访问去看,结果真的乱码了。我调试我本地的导出,结果又出奇的没问题。哎,这不,找度娘来了。更奇怪的是我加入了ob缓冲函数,ob_end_clean()有点作用都不起,找了bom头 什么也没找到,下载出来的数据都是乱码的
_Davis 2017-08-03
  • 打赏
  • 举报
回复

我这个是什么鬼,在本地就不会
YoungKiChan 2017-08-01
  • 打赏
  • 举报
回复
已经解决问题 我的php code $fileName .= ".xls"; $fileName = iconv("utf-8", "gb2312", $fileName); //重命名表 $objPHPExcel->getActiveSheet()->setTitle($bookname); //设置活动单指数到第一个表,所以Excel打开这是第一个表 $objPHPExcel->setActiveSheetIndex(0); //将输出重定向到一个客户端web浏览器(Excel2007) header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header("Content-Disposition: attachment; filename=\"$fileName\""); header('Cache-Control: max-age=0'); $objWriter = IOFactory::createWriter($objPHPExcel,'Excel5'); ob_end_clean() ;//清除缓存,后面加上 $objWriter->save('php://output'); //文件通过浏览器下载 exit; 之前一直无法解决phpExecl导出后乱码的问题,后来在代码中加上ob_end_clean() ;后下载Excel文件还是报错,不过是报这个错 falied to delete buffer zlib output compression 最后我去看了php.ini的配置 修改一下两个配置 zlib.output_compression = Off;//改成off ;zlib.output_compression_level = -1;//在前面加上一个分号; 然后重启phpstudy服务 此时便可正常打开Excel文件
杨掌勺的 2017-04-05
  • 打赏
  • 举报
回复
引用 5 楼 u012251647 的回复:
header之前先清除缓存区的内容

ob_end_clean();// 就是加这句

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$fileName.'.xls"');
header('Cache-Control: max-age=0');
管用 ,,,,,不知道为啥
fmagic 2015-09-14
  • 打赏
  • 举报
回复
header之前先清除缓存区的内容

ob_end_clean();// 就是加这句

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$fileName.'.xls"');
header('Cache-Control: max-age=0');
小菜鸟czh 2015-09-10
  • 打赏
  • 举报
回复
是不是编码问题啊
任务哦噶 2015-09-10
  • 打赏
  • 举报
回复
$val["name"]=iconv("gb2312","utf-8//IGNORE",$val["name"]);
  • 打赏
  • 举报
回复
header('Content-Type:text/html;charset=utf-8');试试这个
xuzuning 2015-09-02
  • 打赏
  • 举报
回复

打开任何一个 xls 文件都会看到那个文件标识是顶格的,但你的截图中不是这样
请检查是否有 BOM 头或其他输出
另外,那些 后边跟有空心方块的英文单词也是不应该有的,请检查相关的程序文件是否上传齐全了

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧