php将数据库数据导出成Excel

<?php  
    //导出数据
    public function exportData(){
        $ary_lottery_list = D('DrawUser')->userLucky('5');
        $fileExcel  =  $_SERVER['DOCUMENT_ROOT'].'/Public/Uploads/excel/';                                       //文件存放目录
        if(!is_dir($fileExcel)) @mkdir($fileExcel,0777,1);
        $excel_file = 'exportStatData'. date('Y-m-d-H-i-s', time()).'.csv';
        $header     = $this->setExcelHeader($ary_lottery_list);
        $contents = $this->setExcelContents($ary_lottery_list);
        $this->export_csv($contents, $header, $excel_file,$fileExcel);
        //Excel显示列
        header("Content-type:application/force-download;charset=utf-8");
        header("Content-Disposition:attachment;filename=" .$excel_file);
        readfile($fileExcel.$excel_file);
        exit;
    }
    /* *
    * 报表字段
    */
    private function setExcelHeader($ary_data){
        $heards = array(
            'ID','姓名','手机号','详细地址','奖品'
        );
        return $heards;
    }
    /* *
     * 处理获取的数据库数据
     */
    private function setExcelContents($ary_data){
        $contents = array();
        foreach($ary_data as $key=>$val){
            $tmp_contents = array(
                $val['id'],
                $val['name'],
                $val['tel'],
                $val['province']." ".$val['city']." ".$val['county']." ".$val['address'],
                $val['p_name']
            );
            $contents[] = $tmp_contents;
        }
        return $contents;
    }
    function export_csv($data, $title_arr, $file_name = '',$filexcel) {
        $csv_data = '';
        /** 标题 */
        $nums = count($title_arr);
        for ($i = 0; $i < $nums - 1; ++$i) {
            $csv_data .= '"' . $title_arr[$i] . '",';
        }
        if ($nums > 0) {
            $csv_data .= '"' . $title_arr[$nums - 1] . "\"\r\n";
        }
        $csv_data = iconv('utf-8', 'GB2312',$csv_data);
        $file_name = empty($file_name) ? date('Y-m-d-H-i-s', time()) : $file_name;
        if(count($data)>300){
            file_put_contents($filexcel.$file_name,  $csv_data) ;
            foreach ($data as $k => $row) {
                $csv_data = "";
                for ($i = 0; $i < $nums - 1; ++$i) {
                    if($i == 0){
                        $row[$i] = str_replace("\"", "\"\"", $row[$i]);
                        //$csv_data .= '`'.trim($row[$i]). '`,';
                        $csv_data .= trim($row[$i]). ',';
                    }else{
                        $row[$i] = str_replace("\"", "\"\"", trim($row[$i]));
                        $csv_data .= '"' . $row[$i] . '",';
                    }
                }
                $csv_data .= '"' . $row[$nums - 1] . "\"\r\n";
                unset($data[$k]);
                file_put_contents($filexcel.$file_name, iconv('utf-8', 'GB2312', $csv_data),FILE_APPEND) ;
            }
        }
        else{
            foreach ($data as $k => $row) {
                $csv_line='';
                for ($i = 0; $i < $nums - 1; ++$i) {
                    if($i == 0){
                        $row[$i] = str_replace("\"", "\"\"", $row[$i]);
                        //$csv_line .= '`'.trim($row[$i]). '`,';
                        $csv_line .= trim($row[$i]). ',';
                    }else{
                        $row[$i] = str_replace("\"", "\"\"", trim($row[$i]));
                        $csv_line .= '"' . $row[$i] . '",';
                    }
                }
                $csv_line .= '"' . $row[$nums - 1] . "\"\r\n";
                $csv_line = iconv('utf-8', 'GB2312',$csv_line);
                $csv_data .= $csv_line;
                //unset($data[$k]);
            }
            file_put_contents($filexcel.$file_name,  $csv_data) ;
//            file_put_contents($filexcel.$file_name, $csv_data) ;
        }
        return true;
    }
?>

猜你喜欢

转载自blog.csdn.net/gyen_ki/article/details/78291276