去发现生活中的美好,记录生活中的点点滴滴

php简单的导出excel功能

php admin 204℃
//代码:
if($_POST['export']=="export")
{
   $filename = '订单列表.xls';
   header("Content-type: application/vnd.ms-excel; charset=utf-8");
   header("Content-Disposition: attachment; filename=$filename");
   $data="姓名\t电话号码\t兑换商品名\tsn码\n";
   foreach($list as $key=>$value)
  {
      $data.=$value['user_name']."\t".$value['telphone']."\t".$value['goods_name']."\t".$value['sncode']."\n";
  }
  echo iconv("UTF-8", "gbk", $data);exit;
}
$list是sql检索出来的数据,将$list中的字段数据遍历出来即可。

php简单的导出excel功能

有两种编码方式:

 

 

echo iconv("UTF-8", "gbk", $data);
echo mb_convert_encoding( $data, "gbk","UTF-8");

导出大数据时,需要用到flush和ob_flush将缓存刷到浏览器(导出内存溢出或者超时也可以解决):

/**
     * @creator gym
     * @data 2016/11/10
     * @desc 数据导出到excel(csv文件)
     * @param $filename 导出的csv文件名称 如date("Y年m月j日").'列表.csv'
     * @param array $tileArray 所有列名称
     * @param array $dataArray 所有列数据
     */
    public static function exportToExcel($filename, $tileArray=[], $dataArray=[]){
        ini_set('memory_limit','512M');
        ini_set('max_execution_time',0);
        ob_end_clean();
        ob_start();
        header("Content-Type: text/csv");
        header("Content-Disposition:filename=".$filename);
        $fp=fopen('php://output','w');
        fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF));
//        $fp=fopen('D://hello.csv','w');
        fputcsv($fp,$tileArray);
        $index = 0;
        foreach ($dataArray as $item) {
            if($index==1000){
                $index=0;
                ob_flush();
                flush();
            }
            $index++;
            fputcsv($fp,$item);
        }
        ob_flush();
        flush();
        ob_end_clean();
    }

转载请注明:永盟博客 » php简单的导出excel功能

喜欢 (2)