PHP中使用CSV导出数据的方法

来源:互联网 发布:淘宝卖家关联问题 编辑:程序博客网 时间:2024/06/04 17:55

之前到做数据导出这个功能的时候,发现如果使用PHPExcel进行数据导出的吧,数据量过大,就没有办法导出了,后来使用导出的文件后缀格式为.csv就没有问题了。下面写一下我的方法总结吧:

<?phpnamespace Home\Controller;use Think\Controller;class CheckController extends PublicController{    /*     * 封装的csv导出数据的方法     * 文件名$fileName     * $headArr 字段名     * 需要导出的数据数据 $data     * */    private  function getCSV($fileName,$headArr,$data){        $date = date("Y_m_d",time());        $fileName .= "_{$date}.csv";        $fileName = iconv("utf-8", "gb2312", $fileName);             header('Content-Type: Content-type:text/csv');        header("Content-Disposition: attachment;filename=\"$fileName\"");        header('Cache-Control: max-age=0');        $fp = fopen('php://output', 'a');        // 将数据通过fputcsv写到文件句柄        fputcsv($fp, $head);        fputcsv($fp, $headArr);        // 计数器        $cnt = 0;        // 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小        $limit = 100000;        $count = count($data);        for($t=0;$t<$count;$t++) {            $cnt ++;            if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题                ob_flush();                flush();                $cnt = 0;            }            $row = $data[$t];            foreach ($row as $i => $v) {                $row[$i] = iconv('utf-8', 'gbk', $v);            }//            fputcsv($fp, $row);            unset($row);        }        //下面使用案例         //导出用户数据数据方法    public function epiexport()    {          $Model = M('userinfo');          $map['Status']=1;         $userinfolist = $Model->where($map)->select();        //用户表数据        $alldata = array();        foreach ($userinfolist as $k=>$val) {            $alldata[$k]['Number'] = $val['number'];            $alldata[$k]['DocuDate'] = $val['docudate'];            $alldata[$k]['Name'] = $val['name'];            $alldata[$k]['Sex'] = $val['sex'] == 1 ? '男' : '女';            $alldata[$k]['Birth'] = $val['birth'];            $alldata[$k]['Nation'] = $val['nation'];            $alldata[$k]['FatherName'] = $val['fathername'];            $alldata[$k]['FatherPhoneNo'] = $val['fatherphoneno'];            $alldata[$k]['MotherName'] = $val['mothername'];            $alldata[$k]['MotherPhoneNo'] = $val['motherphoneno'];            $alldata[$k]['Address'] = $val['address'];            $alldata[$k]['School'] = $val['school'];            $alldata[$k]['SchoolType'] = $val['schooltype'];            $alldata[$k]['ClassName'] = $val['classname'];            $alldata[$k]['AddTime'] =date('Y-m-d',$val['addtime']);            $alldata[$k]['Lost']=$val['lost'];            $alldata[$k]['inquiryopen'] = $val['inquiryopen'];        }            $headArr=array_keys($alldata[$k]);            $filename="epidata";            $this->getCSV($filename,$headArr,$alldata);    }}
原创粉丝点击