之前用的GBK编码格式,PHP导出EXCEL格式是好,现在改为UTF8编码,导出EXCEL中文乱码,已经解决,用iconv转换下就可以了
但是,导出的EXCEL都在一个单元格内,换行用\n是可以的,\t却始终没有效果,高手帮忙看下了,代码如下:session_start();
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type:application/vnd.ms-excel;charset=utf-8");
header("Content-Type: application/download");
switch($_REQUEST['menu']){
case "userlist":
$name1 = "学生";
$name1 = iconv("utf-8","gb2312//ignore",$name1);
header("Content-Disposition: attachment;filename=".$name1.".xls ");break;
default:
header("Content-Disposition: attachment;filename=noname.xls ");break;
}
header("Content-Transfer-Encoding: binary"); 
include_once("../inc/init.php");
$menu = $_REQUEST['menu'];
$u[] = "学生姓名";$u[] = "学生学号";$u[] = "手机号码";$u[] = "联系邮件";$u[] = "登录次数";
$u[] = "导师姓名";$u[] = "导师职称";$u[] = "所在班级";$u[] = "所在学校";$u[] = "名 次";$u[] = "总人数";
foreach($u as $cc){
$cc = iconv("utf-8","gb2312//ignore",$cc);
echo $cc."\t";
}

解决方案 »

  1.   

    服务器上不需要装EXCEL吧,我电脑上装的是2003,服务器上没装EXCEL!
      

  2.   

    把iconv()函数换成mb_convert_encoding()试试
    \t 是制表符的吗!换行好像是'\r\n'吧
      

  3.   

    楼主,我一开始也是使用此法,但是,列一多就会出问题。而且,一上传服务器也会出问题。后来查阅如下资料:
    此法并非导出excel,此法只不过是生成一个能用excel打开的文件。最后使用phpexcel,推荐好汉,也使用phpexcel算了,功能强大,体积也不大。
      

  4.   

    这导出的不是excel文档吧,就一个用tab分隔的文本文档,当然excel也是能打开它的。