首页 > 学院 > 开发设计 > 正文

封装导出csv文件类

2019-11-11 05:10:13
字体:
来源:转载
供稿:网友

  摘要:使用场景,从数据表中取出utf-8的二维数组数据,需要通过php输出流的形式下载到客户端,故封装此类。

class ExportCsv { static function export($file_name = '',$table = array(),$header = array()){ $file_name = $file_name ? $file_name : 'default.csv'; if(!is_array($table) || (count($table) == 0)){ echo '无效数据'; exit(); } $now = gmdate("D, d M Y H:i:s"); header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); header("Cache-Control: max-age=0, no-cache, must-revalidate, PRoxy-revalidate"); header("Last-Modified: {$now} GMT"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment;filename={$file_name}"); header("Content-Transfer-Encoding: binary"); ob_start(); $df = fopen("php://output", 'w'); if(is_array($header) && (count($header) != 0)){ $header = self::encodeSwitch($header); fputcsv($df, $header); } $table = self::encodeSwitch($table); foreach($table as $line){ fputcsv($df, $line); } fclose($df); ob_end_flush(); } static function encodeSwitch($a = array()){ $re = array(); if(!is_array($a)){ return false; } foreach($a as $k => $v){ if(is_array($v)){ $re[] = self::encodeSwitch($v); }else{ $re[] = mb_convert_encoding($v, 'gbk', 'utf-8'); } } return $re; }}

<完>


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表