在header() 前面加上ob_end_clean() 函数, 清除缓冲区, 这样就不会乱码了!
ob_end_clean();//清除缓冲区,避免乱码
header('Content-Type: application/vnd.ms-excel');
.....
.....

解决方案 »

  1.   

    $objWriter->save('php://output'); 输出的是二进制文档流,就和图片一样不存在字符集的问题
    用 excel 打开是出现乱码,是因为文件中含有不能被他识别的内容
    这多半是包含了 php 的错误信息
    你可以截个图贴上来看看,也可以以把 xls 文件放到网盘上
      

  2.   

    上下代码
    /*--------------设置表头信息------------------*/
    $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A1', 'a')
                ->setCellValue('B1', 'b')
                ->setCellValue('C1', 'c')
                ->setCellValue('D1', 'd')
                ->setCellValue('E1', 'e')
                ->setCellValue('F1','f')
                ->setCellValue('G1','g')
                ->setCellValue('H1','h')
                ->setCellValue('I1',i')
                ->setCellValue('J1','f');
    /*--------------开始从数据库提取信息插入Excel表中------------------*/
    $i=2; //定义一个i变量,目的是在循环输出数据是控制行数
    for($j=0;$j<count($result);$j++){
    //  $rm = iconv("GB2312","UTF-8",$rs[1]);  //对字符进行编码将数据库里GB2312的中文字符转换成UTF-8格式
      $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue("A".$i, $result[$j]['ori_stu_name'])
                ->setCellValue("B".$i, $result[$j]['ori_stu_candidateNum'])
                ->setCellValue("C".$i, $result[$j]['ori_stu_sex'])
                ->setCellValue("D".$i, $result[$j]['ori_stu_id_card'])
                ->setCellValue("E".$i, $result[$j]['ori_stu_institution'])
                ->setCellValue('F'.$i, $result[$j]['ori_stu_specialty'])
                ->setCellValue('G'.$i, $result[$j]['ori_stu_phone'])
                ->setCellValue('H'.$i, $result[$j]['ori_stu_isMember'])
                ->setCellValue('I'.$i, $result[$j]['ori_stu_domicile'])
                ->setCellValue('J'.$i, $result[$j]['ori_stu_isReport']);         
                $i++;
     }

    /*--------------下面是设置其他信息------------------*/
    $objPHPExcel->getActiveSheet()->setTitle('学生表');      //设置sheet的名称
    $objPHPExcel->setActiveSheetIndex(0);                            //设置sheet的起始位置
    $filename = date('Y-m',time())."信息表";
                header('Content-Type: application/vnd.ms-excel');
                header('Content-Disposition: attachment;filename='.$filename.'.xls');
                header('Cache-Control: max-age=0');
                $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
                $objWriter->save('php://output');  //这里生成excel后会弹出下载
    我上代码吧Vendor("Excel.PHPExcel");
                Vendor("Excel.PHPExcel.IOFactory"); 
                $objPHPExcel = new PHPExcel();   
                $db=M("student_info");
                $where="where fsi_logistics.ori_log_stuCandidateNum = fsi_student_info.ori_stu_candidateNum";
                $sql="select logistics.*,student_info.ori_stu_name  from student_info,logistics ".$where;
    $result= $db->query($sql); 
    $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A1', '姓名')
                ->setCellValue('B1', '考生号')
                ->setCellValue('C1', '商品')
                ->setCellValue('D1', '价格');
    $i=2;
    for($j=0;$j<count($result);$j++){
      $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue("A".$i, $result[$j]['ori_stu_name'])
                ->setCellValue("B".$i, $result[$j]['ori_log_stuCandidateNum'])
                ->setCellValue("C".$i, $result[$j]['product'])
                ->setCellValue("D".$i, $result[$j]['price']);         
                $i++;
     }
    $objPHPExcel->getActiveSheet()->setTitle('学生表'); 
    $objPHPExcel->setActiveSheetIndex(0);   
    $filename = date('Y-m',time())."生活用品表";
    ob_end_clean() ;
                header('Content-Type: application/vnd.ms-excel');
                header('Content-Disposition: attachment;filename='.$filename.'.xls');
                header('Cache-Control: max-age=0');
                $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
                $objWriter->save('php://output');
                exit;   没有其它输出了呀,在winddow下导出是正常的
      

  3.   

    我已经解决了,bom头的问题,谢谢你们了