zoukankan      html  css  js  c++  java
  • 从数据库中导出.csv文件

    需求: 本次将数据库中的数据导出成.csv文件(office可以打开),

     //数据的生成,根据你所选中的数据进行生成
        //params:$activity_id -> 活动的id
        //params:$form_id  ->  导出数据中选中的活动id
        public function exportData($activity_id,$form_id){
            ini_set('memory_limit','500M');//设置允许最大内存
            set_time_limit(300);//设置允许脚本运行的时间,单位为秒。如果超过了此设置,脚本返回一个致命的错误。默认值为30秒,在此设置为300秒
            
            $collection = "form_".$activity_id;
            $form_id_arr = explode(',', $form_id);
            //由于form_id在mongodb中保存的为int类型,因此需要对string中的值进行类型装换
            for ($i=0; $i <count($form_id_arr) ; $i++) { 
                $form_id_arr[$i] = intval($form_id_arr[$i]);
            }
            //根据传入的参数来进行获取数据
            $list = MongoClassClient::getInstance(0)->where_in('form_id',$form_id_arr)->get($collection);
            if($list){
                foreach($list as $key => $val ){
                   unset($list[$key]['_id']); //删除多余的id字段
                }
            }
            //print_r($list);
            if(empty($list)){
                exit("暂无数据");
            }
            $column_name = array();
            header ( "Content-type:application/vnd.ms-excel" );
            header ( "Content-Disposition:filename=" . iconv ( "UTF-8", "GBK", date("Y-m-d_H_i_s" , time())."-".$activity_id ) . ".csv" );//设置文件的名称
            // 打开PHP文件句柄,php://output 表示直接输出到浏览器
            $fp = fopen('php://output', 'a');
            foreach ($list as $key => $value) {
                fputcsv($fp, $value);
            }
            ob_flush();
            flush();
            die();
        }

    以上是我个人使用的导出少量数据的方法,当然,也在网上找了一些导出大量数据的方法,代码和说明如下。

    做项目时,想把数据导出保存到csv文件里,就查阅资料总结一下,把实现代码分享出来给大家,需要的朋友可以参考一下。
    转自【B5教程网】:http://www.bcty365.com/content-10-595-1.html

    set_time_limit(0);
           ini_set ('memory_limit', '256M');
           $db = $this->load->database('default',true);
           $sql = "SELECT * FROM `t_mobile_number_section` $condition";
    
           $query = $db->query($sql);
    
           $result = $query->result_array();
    
           $filename = 'number'.time().'.csv';
    
           header('Content-Type: application/vnd.ms-excel');
           header('Content-Disposition: attachment;filename="'.$filename.'"');
           header('Cache-Control: max-age=0');
    
           // 打开PHP文件句柄,php://output 表示直接输出到浏览器
           $fp = fopen('php://output', 'a');
    
           // 输出Excel列名信息
           $head = array($title['number_section'],$title['area_code'],$title['province'],$title['city']);
           foreach ($head as $i => $v) {
               // CSV的Excel支持GBK编码,一定要转换,否则乱码
               $head[$i] = iconv('utf-8', 'gbk', $v);
           }
    
           // 将数据通过fputcsv写到文件句柄
           fputcsv($fp, $head);
    
           // 计数器
           $cnt = 0;
           $limit = 100000;
    
           // 从数据库中获取数据,为了节省内存,不要把数据一次性读到内存,从句柄中一行一行读即可
    
           $i = 2;
    
           $count = 0;
           foreach ($result as $key => $val) {
               $count ++;
               $cnt ++;
    
               //每隔$limit行,刷新一下输出buffer,不要太大,也不要太小 ,大数据量时处理
               if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题
                   ob_flush();
                   flush();  //刷新buffer
                   $cnt = 0;
               }
               $rows[$i] = iconv('utf-8', 'gbk', $val['number_section']);
               $rows[$i+1] = iconv('utf-8', 'gbk', $val['area_code']);
               $rows[$i+2] = iconv('utf-8', 'gbk', $val['province']);
               $rows[$i+3] = iconv('utf-8', 'gbk', $val['city']);
               fputcsv($fp, $rows);
           }
  • 相关阅读:
    Visual Studio 2008 可扩展性开发(一):VS概览
    CButtonST使用技巧: CButtonST简介
    Doxygen + Graphviz + Htmlhelp, 成为文档好手
    Django的多数据库处理(垂直分库和水平分库)
    赫曼米勒中国| 设计,让世界更美好。
    maccman/juggernaut
    aptget y install buildessential
    QT分析之WebKit(三)
    Django的多数据库支持,太酷了~
    我们的征途是星辰大海#
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/6077228.html
Copyright © 2011-2022 走看看