请选择 进入手机版 | 继续访问电脑版

SpeedPHP框架

 找回密码
 注册成为新用户

QQ登录

只需一步,快速开始

查看: 5802|回复: 8

利用speedPHP导出excel失败,将导出的内容输出在页面上

[复制链接]
发表于 2011-2-12 11:50:10 | 显示全部楼层 |阅读模式
导出的代码如下

  1. //导出消费3次以上的用户
  2. public function explortCost3()
  3. {
  4. $fileName=iconv('UTF-8','gb2312','商城消费3次以上的用户');
  5. header("Content-type: application/vnd.ms-excel; charset=utf-8");
  6. header("Content-Disposition: attachment; filename=$fileName.xls");
  7. $tab0903 = spClass('t_bsts_0909250903');
  8. $sql="select a.`f_bsts_0909250903_000`,
  9. a.`f_bsts_0909250903_019` as userName,
  10. a.`f_bsts_0909250903_020` as areaName,
  11. a.`f_bsts_0909250903_021` as address,
  12. a.`f_bsts_0909250903_023` as userMP,
  13. sum(a.`f_bsts_0909250903_009`) as totalMoney,
  14. count(a.`f_bsts_0909250903_000`) as costNum
  15. from `t_bsts_0909250903` as a
  16. left join (
  17. select `f_bsts_0909250903_019` as userName1,
  18. count(`f_bsts_0909250903_000`) as costNum1
  19. from `t_bsts_0909250903` where
  20. (`f_bsts_0909250903_015`=3 or `f_bsts_0909250903_015`=4) and `f_bsts_0909250903_019`<>''
  21. group by `f_bsts_0909250903_019`
  22. ) as b on a.`f_bsts_0909250903_019`=b.`userName1`
  23. where (a.`f_bsts_0909250903_015`=3 or a.`f_bsts_0909250903_015`=4)
  24. and a.`f_bsts_0909250903_019`<>'' and b.costNum1>2 group by a.`f_bsts_0909250903_019` order by costNum desc,totalMoney desc
  25. ";
  26. $r1=$tab0903->findSql($sql);
  27. $str.= "排序\t";
  28. $str.= "姓名\t";
  29. $str.= "地址\t";
  30. $str.= "联系电话\t";
  31. $str.= "消费总额\t";
  32. $str.= "消费次数\t";
  33. $str.= "\n";
  34. foreach ($r1 as $_k=>$_v)
  35. {
  36. $str.= (++$sortN)."\t";
  37. $str.= $_v['userName']."\t";
  38. $str.= $_v['areaName'].','.$_v['address']."\t";
  39. $str.= $_v['userMP']."\t";
  40. $str.= '¥'.$_v['totalMoney']."\t";
  41. $str.= $_v['costNum']."\t";
  42. $str.= "\n";
  43. }
  44. //转换为GBK编码
  45. $str = iconv("UTF-8","GBK",$str);
  46. //输出
  47. print($str);
  48. }
复制代码


运动的结果是不生成excel文件,而是把$str的内容全部输出到页面上,哪位大侠帮助一下,小弟感激不尽
发表于 2011-2-12 11:57:56 | 显示全部楼层
header前面再加上
header("Content-Type: application/force-download");
发表于 2011-2-12 12:03:40 | 显示全部楼层
测试看看
 楼主| 发表于 2011-2-12 12:17:48 | 显示全部楼层
回复 2# jake


    还是没有用哦,我个人理解原因可能是speedphp框架里自带了一些header输出,从而导致导出的excel的header失效,有没有什么办法消去方法执行所有header信息呢?
发表于 2011-2-12 13:49:24 | 显示全部楼层
回复  jake


    还是没有用哦,我个人理解原因可能是speedphp框架里自带了一些header输出,从而导致导出 ...
stjdydayou 发表于 2011-2-12 12:17


框架没有输出header。

你可以在header前面加上ob_clean
 楼主| 发表于 2011-2-12 14:44:37 | 显示全部楼层
回复 5# jake

已经解决了,在首页index.php里加一个ob_start();
在运行的方法中加一个ob_clean();
总结原因还是在header前面就输出的内容~~
呵呵
谢谢
发表于 2011-2-12 14:53:45 | 显示全部楼层
回复  jake

已经解决了,在首页index.php里加一个ob_start();
在运行的方法中加一个ob_clean();
总结原因 ...
stjdydayou 发表于 2011-2-12 14:44


简单说一下,speedphp框架文件没有header输出,也没有bom等空字符,可以搜索代码看看。
楼上可以检查一下各个文件是否有bom等空字符。
发表于 2011-2-25 18:13:33 | 显示全部楼层
刚好要用到,标记下,嘿嘿
发表于 2014-9-26 10:24:50 | 显示全部楼层
代码不工整
您需要登录后才可以回帖 登录 | 注册成为新用户

本版积分规则

手机浏览|简版|中文PHP框架|开源协议|SpeedPHP.com ( 粤ICP备08008671号

GMT+8, 2020-1-18 13:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表