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 应用程序安全防范技术研究
Sep 25 PHP
PHP 开发环境配置(测试开发环境)
Apr 28 PHP
PHP Zip压缩 在线对文件进行压缩的函数
May 26 PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 PHP
PHP执行批量mysql语句的解决方法
May 02 PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 PHP
学习php设计模式 php实现建造者模式
Dec 07 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
May 12 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 PHP
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
Apr 01 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 和 MySQL 时区的一点总结
2008/03/26 PHP
php 异常处理实现代码
2009/03/10 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
JS中style属性
2006/10/11 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
es6函数name属性功能与用法实例分析
2020/04/18 Javascript
Python对象类型及其运算方法(详解)
2017/07/05 Python
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
解决python 文本过滤和清理问题
2019/08/28 Python
Python数据库小程序源代码
2019/09/15 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
网上卖盒饭创业计划书
2014/01/26 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
分公司经理任命书
2014/06/05 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
2016年大学校运会广播稿件
2015/12/21 职场文书
小学英语课教学反思
2016/02/15 职场文书
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android