zoukankan      html  css  js  c++  java
  • php导出任意mysql数据库中的表去excel文件

    测试建表脚本

    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

    --
    -- 数据库: `mysqlnew`
    --

    -- --------------------------------------------------------

    --
    -- 表的结构 `test`
    --

    CREATE TABLE IF NOT EXISTS `test` (
      `id` int(10) NOT NULL auto_increment,
      `websitename` varchar(200) character set utf8 NOT NULL,
      `websiteurl` varchar(200) character set utf8 NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

    --
    -- 导出表中的数据 `test`
    --

    INSERT INTO `test` (`id`, `websitename`, `websiteurl`) VALUES
    (1, '百度', 'http://www.baidu.com'),
    (5, 'google', 'http://www.google.com'),
    (4, '400电话', 'http://www.my400800.cn'),
    (6, '搜狗', 'www.sogou.com'),
    (7, '必应', 'http://www.bing.com');

    php 文件代码

    <?php


    function xlsBOF() {
        echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
        return;
    }

    function xlsEOF() {
        echo pack("ss", 0x0A, 0x00);
        return;
    }

    function xlsWriteNumber($Row, $Col, $Value) {
        echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
        echo pack("d", $Value);
        return;
    }

    function xlsWriteLabel($Row, $Col, $Value ) {
        $L = strlen($Value);
        echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
        echo $Value;
        return;
    }

    /**
     *添加头部信息
     * @param <type> $rsRec
     */
    function addheader($rsRec) {
        $fieldLen = mysql_num_fields($rsRec);
        xlsBOF();
        $iCell = 0;
        for($i=0;$i<$fieldLen;$i++) {
            $fieldname = mysql_field_name($rsRec, $i);
            xlsWriteLabel(0,$iCell++, iconv("utf-8", "gb2312", $fieldname));
        }


    }

    /**
     *添加记录信息
     * @param <type> $rsRec
     */
    function addData($rsRec) {
        $xlsRow=1;
        $fieldLen = mysql_num_fields($rsRec);
        while($rsone=mysql_fetch_object($rsRec)) {
            $iCell = 0;
            for($i=0;$i<$fieldLen;$i++) {
                $fieldname = mysql_field_name($rsRec, $i);
                $fieldnameValue = $rsone->$fieldname;
                xlsWriteLabel($xlsRow,$iCell++,iconv("utf-8", "gb2312", $fieldnameValue));
            }

            $xlsRow++;
        }
        xlsEOF();
        exit;
    }

    if(isset($_POST["tableName"])) {

        $con = mysql_connect("localhost", "root", "vertrigo");

        $result=mysql_db_query("mysqlnew","select * from ".$_POST["tableName"]);

    // 文件头
        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/download");
        header("Content-Disposition: attachment;filename=test.xls ");
        header("Content-Transfer-Encoding: binary ");

    // 向表中添加数据
        addheader($result) ;
        addData($result) ;

        mysql_close($con);

    }

    ?>
    <!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>excel信息导出</title>
        </head>
        <body>
            <div>
                <form name="form1" method="post" action="" onSubmit="">
                    <input type="text" name="tableName" value="" />
                    <br>
                   
                    <input class="ccc" name="" type="submit" value="提交" />
                </form>
            </div>
        </body>
    </html>

    运行画面

    生成excel文件内容

    id websitename websiteurl

    1 百度 http://www.baidu.com
    5 google http://www.google.com
    4 400电话 http://www.my400800.cn
    6 搜狗 www.sogou.com

    7 必应 http://www.bing.com












  • 相关阅读:
    C 栈和堆的区别
    ubuntu 12.10 禁用触摸板
    完美解决 linux sublime 中文无法输入
    gdb 断点调试C程序
    归并排序
    算法效率表示
    sublime -text 删除已安装插件
    MSSQL数据库表索引碎片整理优化性能
    Rdlc报表出现空白页解决方法
    RDLC报表:每页显示N条记录
  • 原文地址:https://www.cnblogs.com/jishu/p/2074885.html
Copyright © 2011-2022 走看看