php 将数据以excel文件导出

来源:互联网 发布:电子烟入门 知乎 编辑:程序博客网 时间:2024/05/17 01:10

背景:项目中需要支持数据导出功能,查看项目里的导出代码(同事自己写的,没用代码),觉得满足项目里的需求,特收藏。

源码:

    /**     * 导出搜索日志信息     */    public function exportLogInfo()    {        // 获取数据信息        $conditions = $this->getConditions();    // 拼装导出数据用sql的条件        $goodsmod = & m('goods');        $body = $goodsmod->db->getAllWithIndex("select search_condition,                                                    case search_type                                                         WHEN 1 THEN '类目点击' WHEN 2 THEN '关键词搜索' ELSE ''                                                     END AS search_type,search_condition_md5,                                                    SUM(visit_count) as visit_count,MAX(visit_time) as visit_time                                                from ecm_absearch_log where log_id>0 ".$conditions." GROUP BY                                                 search_condition_md5 order by visit_count desc limit 0,5000",'search_condition_md5');        //设置excel标题和文件名        $title = '操作日志导出' . date('YmdHis', time());        $filename = $title . ".xls";        //表头内容        $head = array('关键词', '类型', '请求次数', '最新请求时间');        //生成xml格式数据        echo  '<?xml version="1.0" ?>        <?mso-application progid="Excel.Sheet"?>        <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">        <Styles>            <Style ss:ID="Default" ss:Name="Normal">                <Alignment ss:Vertical="Center"/>                <Borders/>                <Font x:CharSet="134" ss:Size="10"/>                <Interior/>                <NumberFormat/>                <Protection/>            </Style>            <Style ss:ID="s1">                <Font ss:Bold="1"/>                <Alignment ss:Horizontal="Center"/>                <Borders>                <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>                <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>                <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>                <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>                </Borders>                <Interior ss:Color="#C0C0C0" ss:Pattern="Solid" />            </Style>            <Style ss:ID="s2">                <Alignment ss:Horizontal="Center"/>                <Borders>                <Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>                <Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>                <Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>                <Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>                </Borders>            </Style>        </Styles>        <Worksheet ss:Name="'.$title.'">        <Table x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="200" ss:DefaultRowHeight="17.25">';                echo '<Row>';                foreach($head as $value)                {                    echo '<Cell ss:StyleID="s1"><Data ss:Type="String">'.$value.'</Data></Cell>';                }                echo '</Row>';                foreach ($body as $row)                {                    echo '<Row>';                    unset($row['search_condition_md5']);                    foreach($row as $value)                    {                            echo '<Cell ss:StyleID="s2"><Data ss:Type="String">'.$value.'</Data></Cell>';                    }                    echo '</Row>';                 }        echo '</Table>        </Worksheet>        </Workbook>';        //输出到浏览器下载        header("Content-type: application/vnd.ms-excel");        header("Content-Disposition: inline; filename=".$filename);    }


源码说明:

1.$body是二位数组,格式:array(array("关键词"=>"","类型"=>"","请求次数"=>"","最新请求时间"=>""),array(array("关键词"=>"","类型"=>"","请求次数"=>"","最新请求时间"=>""))

    key值随意定,对应的值和标题顺序保持一致就好(避免导出时内容和标题列不一样)

2.xml中的styles标签里的内容是设置excel表格的外观用


原创粉丝点击