php版本 5.2 线程安全 vc6
服务器:apache2.2 线程    模块加载方式(CLI)
其他页面运转正常
废话少说,excel的导出代码,最简单的测试代码,但是下载以后打开提示如下重新命名无效的工作表名称。
<?php 
require_once($_SERVER['DOCUMENT_ROOT']  ."/inc/phpexcel/PHPExcel.php");
require_once($_SERVER['DOCUMENT_ROOT']  ."/inc/phpexcel/PHPExcel/Writer/Excel5.php");// 创建一个处理对象实例      
$objExcel = new PHPExcel();       $objExcel->setActiveSheetIndex(0);      
$objActSheet = $objExcel->getActiveSheet();      
     
//设置当前活动sheet的名称      
$objActSheet->setTitle(iconv('utf-8','gbk', "测试工作pu名字"));     
     
//ROW 1
$objActSheet->setCellValueByColumnAndRow(1,2,iconv('utf-8','gbk', "测试"));
//ROW 2
//ROW 3//获取数据    //在浏览器导出
header("Content-Type: application/force-download");
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=\"导出查询.xls\"");
header('Cache-Control: max-age=0');
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Pragma: no-cache"); // 创建文件格式写入对象实例, uncomment      
$objWriter = new PHPExcel_Writer_Excel5($objExcel);         
//到文件      
$objWriter->save("php://output");  
?>

解决方案 »

  1.   

    apache错误日志已经打开到info,没有显示异常
    php错误日志,也是没有显示异常(php错误级别我记得是notice以上)
      

  2.   

    <?php
    require('config.php');//加载配置文
    header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
    header ("Cache-Control: no-cache, must-revalidate");     
    header ("Pragma: no-cache");     
    header ('Content-type: application/x-msexcel');
    header ("Content-Disposition: attachment; filename=weibo.xls" );  
    header ("Content-Description: PHP/INTERBASE Generated Data" );
    //
    // the next lines demonstrate the generation of the Excel stream
    //
    $content = $db->getList("select * from weibo_baidu");
    $num = count($content);/*echo $num;
    foreach($content as $k=>$contents){
    echo $aa=$k+1;
    echo "<br>";
    //echo $contents['b_title']."<br>";
    }*/
    xlsBOF();   // begin Excel stream
    xlsWriteLabel(0, 0,iconv("UTF-8", "GBK",序号) ); 
    xlsWriteLabel(0, 1,iconv("UTF-8", "GBK",发布者));  
    xlsWriteLabel(0, 2,iconv("UTF-8", "GBK",内容概要) );
    xlsWriteLabel(0, 3,iconv("UTF-8", "GBK",URl));
    xlsWriteLabel(0, 4,iconv("UTF-8", "GBK",来源));
    xlsWriteLabel(0, 5,iconv("UTF-8", "GBK",抓取日期));
    foreach($content as $k=>$contents){
     $i=$k+1;
    xlsWriteLabel($i, 0, $i);
    xlsWriteLabel($i, 1, iconv("UTF-8", "GBK",$contents['b_title']));
    xlsWriteLabel($i, 2, iconv("UTF-8", "GBK",$contents['b_info']));
    xlsWriteLabel($i, 3, iconv("UTF-8", "GBK",$contents['b_url']));
    xlsWriteLabel($i, 4, iconv("UTF-8", "GBK",$contents['b_source']));
    xlsWriteLabel($i, 5, iconv("UTF-8", "GBK",$contents['b_tiem']));
    }
    xlsEOF(); // close the stream 
    // ----- begin of function library -----
    // Excel begin of file header
    function xlsBOF() {
    echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);  
    return;
    }
    // Excel end of file footer
    function xlsEOF() {
    echo pack("ss", 0x0A, 0x00);
    return;
    }
    // Function to write a Number (double) into Row, Col
    function xlsWriteNumber($Row, $Col, $Value) {
    echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
    echo pack("d", $Value);
    return;
    }
    // Function to write a label (text) into Row, Col
    function xlsWriteLabel($Row, $Col, $Value ) {
    $L = strlen($Value);
    echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
    echo $Value;
    return;
    }
    // ----- end of function library -----?>
      

  3.   

    header ('Content-type: application/x-msexcel');
    高人,改了这个后就正常了,  微软的东西这么变扭,明明网上大部分教程都是用application/vnd.ms-excel所以很郁闷啊,能不能大概介绍一下这2个MIME的区别;
    (我找了没找到)基本思路我也知道了,现在就给分