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 相关文章推荐
深入了解php4(1)--回到未来
Oct 09 PHP
支持oicq头像的留言簿(二)
Oct 09 PHP
PHP4 与 MySQL 数据库操作函数详解
Dec 06 PHP
PHP连接SQLServer2005 的问题解决方法
Jul 19 PHP
获取PHP警告错误信息的解决方法
Jun 03 PHP
PHP实现根据时间戳获取周几的方法
Feb 26 PHP
什么是OneThink oneThink后台添加插件步骤
Apr 13 PHP
php结合mysql与mysqli扩展处理事务的方法
Jun 29 PHP
PHP下的浮点运算不准的解决方法
Oct 27 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
Feb 08 PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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 addslashes 函数详细分析说明
2009/06/23 PHP
php curl模拟post提交数据示例
2013/12/31 PHP
PHP基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
Javascript 二维数组
2009/11/26 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
jquery设置控件位置的方法
2013/08/21 Javascript
IE6浏览器中window.location.href无效的解决方法
2014/11/20 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
HTML5 实现的一个俄罗斯方块实例代码
2016/09/19 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
Vue.js的模板语法详解
2020/02/16 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
Python Web服务器Tornado使用小结
2014/05/06 Python
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
2018/06/06 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
Python如何实现的二分查找算法
2020/05/27 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
制定岗位职责的原则
2013/11/08 职场文书
葡萄牙语专业个人求职信
2013/12/10 职场文书
学校节能减排方案
2014/06/13 职场文书
个人授权委托书样本
2014/09/13 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书
微信小程序基础教程之echart的使用
2021/06/01 Javascript