excel 模板
         A       B      C      D 
1   姓名 性别  年龄  入学时间
2
3
..sql 中有表people  字段 name/sex/age/time能不能通过php语言 将sql表中的内容 根据我查询的结果 写入excel吗?就像php中通过 表格$row[]输出结果类似的样子需要学习哪些东西? 有没有一些比较详细的例子?

解决方案 »

  1.   

    这个不难,phpexcel 这个类就能帮你做到了。
    官网上有例子
      

  2.   

    http://hi.baidu.com/boneguan/blog/item/e2d712125f0a0159f819b8df.html
      

  3.   

    恩,下个phpexcel,里面例子也挺多的,看了不懂再问吧
      

  4.   

    麻烦大家帮着看下 http://blog.csdn.net/wlwqw/article/details/4103994 我用的是这个例子改写的  但是提示Fatal error: Call to a member function getActiveSheet() on a non-object in C:\AppServ\www\exceldemo.php on line 40
    这个成员函数应该是什么内容?  谢谢
      

  5.   

    何必搞那么麻烦。用header设置头信息就能实现简单excel了。看我发的连接中的第一种方法。
      

  6.   

    顶,写csv格式的就行了, jordan的其实就是csv格式了。<?php
    header("Content-type:application/vnd.ms-excel");
    header("Content-Disposition:filename=test.xls");$list = array (
                        array('aaa', 'bbb', 'ccc', 'dddd'),
                            array('123', '456', '789'),
                            array('"aaa"', '"bbb"')
                    );$fp = fopen("data.txt", 'w+');foreach ($list as $fields) {
            fputcsv($fp, $fields, "\t");
    }fseek($fp, 0, SEEK_SET);
    echo fread($fp, filesize('data.txt'));fclose($fp);
    ?>
      

  7.   

    你那个方式太麻烦了,而且维护起来难度是在太大了
    推荐我常用的一个方法,用header实现首先按照你需要导出的报表样式,新建一个excel,弄完之后保存,这个时候保存为xml 2003格式的,保存好之后,用记事本打开,之后像组织网页一样,把数据组织进去然后用以下的代码:header("Content-type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=$filename");
    echo $excel_content;上面的 $excel_content 就是你组织好的一串数据
      

  8.   


    根据http://cclinux.blog.51cto.com/1215045/790883 成功输出数据但是遇到了一些问题   
    我的search.php(action到demo2.php) 用于提交查询日期    demo2.php 用于输出csv的处理
    1.我用notepad++看 格式为无BOM的UTF-8 点击查询按钮后 弹出打开,保存,取消的对话框,  选择  能够输出  但是中文乱码  
      转化为普通的UTF-8编码后,直接将结果显示在了页面demo2.php   但是中文能正常显示了   什么原因? 还是想保留那种弹出对话框的方式
    2.打开的时候保留着那些html标签,如何去掉 谢谢demo2.php的代码<?php 
        header('Content-Type:application/vnd.ms-excel;charset=utf-8');
    header('Content-Disposition: attachment;filename="shuju.csv"');
    header('Cache-Control:max-age=0');
        date_default_timezone_set (PRC);?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>无标题文档</title>
    </head><body>
    <?php
    $date1=$_POST['date1'];
    $date2=$_POST['date2'];
    @$con = mysql_connect("localhost","root","mysql");
    mysql_query('set names utf8');
    if (!$con){
    die("数据库链接失败:".mysql_error());
    exit;
    }
    $data = mysql_select_db("BERecord",$con);if(!$data){
    echo mysql_error();
    mysql_close($con); //关闭数据库链接
    exit;
    }
    else{

    //$sql = "select * from record"; 
    $sql = "select * from record where searchtime between '$date1' and '$date2'";$result = mysql_query($sql,$con);$fp = fopen("php://output","a");
    $head = array("1","2");
    foreach($head as $i => $v){
    // $head[$i] = iconv('utf-8','gb2312',$v);
    $head[$i] = mb_convert_encoding("$v","UTF-8","gb2312");
    }
    fputcsv($fp,$head);while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
    fputcsv($fp,$row);
    echo "<br>";
    }
    mysql_close($con);
    }
    ?>
    </body>
    </html>
      

  9.   


    帮我看下10楼 这个有什么问题?  我看中文乱码 说是跟BOM头有关
      

  10.   

    1:先把header部分注释掉,输出到页面上看是否正常。
    2:在代码中把那些html标签删掉就是了。
      

  11.   

    你好,header注释掉后   就自动跳转到 demo2.php的地址上显示csv了  这样就没法保存文件了吧? 不用excel打开的话,没法验证   按我代码里的弄的时候保存后 用excel打开是乱码  但是用notepad++打开就是正常的中文但是我想让他弹出 提示框 用excel打开 保存 取消  的那个  
      

  12.   

    再补充下    我的页面和Mysql数据库 都是统一的utf-8
      

  13.   

    查看 excel 时改下编码。
      

  14.   


    在demo2.php这个页面 我看别人直接改的 mysql_query('set names gb2312');   其他的用来取值的页面都是utf8这样改了之后  用excel打开的结果是中文的了  但是我在mysql的字段里有mencode这个 人员编号的设置   字段结果 mencode varchar(8) utf8_general_ci 否
    我存入的第一个mencode是  000001 导入成csv后,这里的0就没有了    要是保留的话  应该如何处理?  谢谢
      

  15.   

     这个详细的很,那有没有介绍读取excel的详细方法呢,学习~
      

  16.   

    有没有读取excel的详细介绍呢, 学习~
      

  17.   

    求得一方法,但是报错    麻烦看下 
    line 44就是fputcsv($fp,array_map('zero_change',$row));这句<b>Warning</b>:  array_map() [<a href='function.array-map'>function.array-map</a>]: The first argument  'zero_change'  should be either NULL or a valid callback in <b>C:\AppServ\www\BE\demo2.php</b> on line <b>44</b><br /><b>Warning</b>:  fputcsv() expects parameter 2 to be array  null given in <b>C:\AppServ\www\BE\demo2.php</b> on line <b>44</b><br />while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
        fputcsv($fp,array_map('zero_change', $row));
        echo "<br>";
    }function zero_change($v) {
        if (($v{0} == '0') && is_numeric($v)) {
            //$v    = '="' . $v . '"';    //第一种方式
            $v   = "\t{$v}";    //第二种方式
        }
        return $v;
    }