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 相关文章推荐
数据库的日期格式转换
Oct 09 PHP
php线性表顺序存储实现代码(增删查改)
Feb 16 PHP
PHP取整数函数常用的四种方法小结
Jul 05 PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 PHP
PHP小技巧之函数重载
Jun 02 PHP
PHP信号量基本用法实例详解
Feb 12 PHP
thinkPHP中session()方法用法详解
Dec 08 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
用php+ajax新建流程(请假、进货、出货等)
Jun 11 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 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
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
PHP5+UTF8多文件上传类
2008/10/17 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
js 窗口抖动示例
2013/09/04 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
如何编写jquery插件
2017/03/29 jQuery
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
小程序实现多列选择器
2019/02/15 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
Request的中断和ErrorHandler实例解析
2018/02/12 Python
Python过滤序列元素的方法
2020/07/31 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
MySQL面试题
2014/01/12 面试题
外贸学院会计专业应届生求职信
2013/11/14 职场文书
毕业学生推荐信
2013/12/01 职场文书
社区七一党员活动方案
2014/01/25 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
关于安全演讲稿
2014/05/09 职场文书
2014年业务工作总结
2014/11/17 职场文书
预备党员个人总结
2015/02/14 职场文书