php导出csv数据在浏览器中输出提供下载或保存到文件的示例


Posted in PHP onApril 24, 2014

1.在浏览器输出提供下载

/**
 * 导出数据到CSV文件
 * @param array $data  数据
 * @param array $title_arr 标题
 * @param string $file_name CSV文件名
 */
function export_csv(&$data, $title_arr, $file_name = '') {
    ini_set("max_execution_time", "3600");
    $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";
    }
    foreach ($data as $k => $row) {
        for ($i = 0; $i < $nums - 1; ++$i) {
            $row[$i] = str_replace("\"", "\"\"", $row[$i]);
            $csv_data .= '"' . $row[$i] . '",';
        }
        $csv_data .= '"' . $row[$nums - 1] . "\"\r\n";
        unset($data[$k]);
    }
    $csv_data = mb_convert_encoding($csv_data, "cp936", "UTF-8");
    $file_name = empty($file_name) ? date('Y-m-d-H-i-s', time()) : $file_name;
    if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) { // 解决IE浏览器输出中文名乱码的bug
     $file_name = urlencode($file_name);
     $file_name = str_replace('+', '%20', $file_name);
    }
    $file_name = $file_name . '.csv';
    header("Content-type:text/csv;");
    header("Content-Disposition:attachment;filename=" . $file_name);
    header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
    header('Expires:0');
    header('Pragma:public');
    echo $csv_data;
}

2.保存到文件

function export_csv($data, $title_arr, $file_name = '') {

    $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";
    }

    foreach ($data as $k => $row) {
        for ($i = 0; $i < $nums - 1; ++$i) {
            $row[$i] = str_replace("\"", "\"\"", $row[$i]);
            $csv_data .= '"' . $row[$i] . '",';
        }
        $csv_data .= '"' . $row[$nums - 1] . "\"\r\n";
        unset($data[$k]);
    }

    $file_name = empty($file_name) ? date('Y-m-d-H-i-s', time()) : $file_name;
    file_put_contents($file_name, $csv_data) ;
}

调用示例(保存到文件):

$file_name="/var/www/tmp/test.csv" ;
$header = array(
                    '0' => '参数ID',
                    '1' => '参数名称',
                    '2' => '统计次数',
                    '3' => '统计次数百分比',
                    '4' => '唯一用户数',
                    '5' => '唯一用户数百分比',
                    '6' => '人均次数'
            );
            $csvList = array(array("111", "title", "12", "100%", "23", "50%", "4")) ;
            export_csv($csvList, $header, $file_name) ;
PHP 相关文章推荐
在同一窗体中使用PHP来处理多个提交任务
Oct 09 PHP
php 破解防盗链图片函数
Dec 09 PHP
PHP编程过程中需要了解的this,self,parent的区别
Dec 30 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
Jul 01 PHP
PHP图片上传代码
Nov 04 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
Dec 16 PHP
php判断两个浮点数是否相等的方法
Mar 14 PHP
PHP经典面试题集锦
Mar 19 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 PHP
php实现对文件压缩简单的方法
Sep 29 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 #PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 #PHP
php获取中文拼音首字母类和函数分享
Apr 24 #PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 #PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 #PHP
php计算当前程序执行时间示例
Apr 24 #PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 #PHP
You might like
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
php数组去除空值函数分享
2015/02/02 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
node.js实现为PDF添加水印的示例代码
2018/12/05 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
Python程序设计入门(1)基本语法简介
2014/06/13 Python
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
Python 处理数据的实例详解
2017/08/10 Python
python将回车作为输入内容的实例
2018/06/23 Python
利用ImageAI库只需几行python代码实现目标检测
2019/08/09 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
python学习笔记之多进程
2020/08/06 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
印度购物网站:TATA CLiQ
2017/11/23 全球购物
德国网上超市:myTime.de
2019/08/26 全球购物
自动化专业毕业生自荐信
2013/11/01 职场文书
4s店机修工岗位职责
2013/12/20 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
三分钟演讲稿事例
2014/03/03 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
2014年保育员工作总结
2014/12/02 职场文书
新员工入职感言范文!
2019/07/04 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技