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基础知识:类与对象(1)
Dec 13 PHP
php中的MVC模式运用技巧
May 03 PHP
php 获取一个月第一天与最后一天的代码
May 16 PHP
PHP安全性漫谈
Jun 28 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
PHP计算2点经纬度之间的距离代码
Aug 12 PHP
php四种基础算法代码实例
Oct 29 PHP
PHP 使用redis简单示例分享
Mar 05 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 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
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
原生js实现验证码功能
2017/03/16 Javascript
Vue.js如何优雅的进行form validation
2017/04/07 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
[00:53]2015国际邀请赛 中国区预选赛一触即发
2015/05/14 DOTA
Python中的map、reduce和filter浅析
2014/04/26 Python
python提示No module named images的解决方法
2014/09/29 Python
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
python tkinter组件使用详解
2019/09/16 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
python链表类中获取元素实例方法
2021/02/23 Python
应用心理学个人求职信范文
2013/12/11 职场文书
军训自我鉴定
2014/01/22 职场文书
精彩广告词大全
2014/03/19 职场文书
教师调动申请报告
2015/05/18 职场文书
2016年国陪研修感言
2015/11/18 职场文书
mysql如何配置白名单访问
2021/06/30 MySQL