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和AJAX创建RSS聚合器的代码
Mar 13 PHP
dedecms系统常用术语汇总
Apr 03 PHP
用PHP读取和编写XML DOM的实现代码
Feb 03 PHP
PHP mcrypt可逆加密算法分析
Jul 19 PHP
关于初学PHP时的知识积累总结
Jun 07 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
php使用curl和正则表达式抓取网页数据示例
Apr 13 PHP
一个非常完美的读写ini格式的PHP配置类分享
Feb 12 PHP
护卫神php套件 php版本升级方法(php5.5.24)
May 10 PHP
PHP给前端返回一个JSON对象的实例讲解
May 31 PHP
Laravel监听数据库访问,打印SQL的例子
Oct 24 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 chmod 函数与批量修改文件目录权限
2010/05/10 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
Vue 实例事件简单示例
2019/09/19 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
[02:47]DOTA2英雄基础教程 野性怒吼兽王
2013/12/05 DOTA
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
Python文件读写常见用法总结
2019/02/22 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
Django Rest framework权限的详细用法
2019/07/25 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
Python求解正态分布置信区间教程
2019/11/20 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
Waterford美国官网:爱尔兰水晶制品品牌
2017/04/26 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
大一自我鉴定范文
2013/12/27 职场文书
应届生如何写自荐信
2014/01/05 职场文书
代理协议书范本
2014/04/22 职场文书
法律顾问服务方案
2014/05/15 职场文书
学生检讨书范文
2014/10/30 职场文书
入党个人总结范文
2015/03/02 职场文书
小学思想品德教学反思
2016/02/24 职场文书