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中使用Oracle数据库(1)
Oct 09 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
php foreach如何跳出两层循环(详解)
Nov 05 PHP
利用PHP生成CSV文件简单示例
Dec 21 PHP
PHP多种序列化/反序列化的方法详解
Jun 23 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
PHP设计模式之工厂模式定义与用法详解
Apr 03 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
PHP生成zip压缩包的常用方法示例
Aug 22 PHP
laravel通用化的CURD的实现
Dec 13 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
后宫无数却洁身自好的男主,唐三只爱小舞
2020/03/02 国漫
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
ThinkPHP的I方法使用详解
2014/06/18 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
jquery调用wcf并展示出数据的方法
2011/07/07 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
JQuery的$和其它JS发生冲突的快速解决方法
2014/01/24 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
2020/02/10 Javascript
Vue axios获取token临时令牌封装案例
2020/09/11 Javascript
解决uWSGI的编码问题详解
2017/03/24 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
详解Python中的动态属性和特性
2018/04/07 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
python中单下划线_的常见用法总结
2018/07/10 Python
python实现维吉尼亚算法
2019/03/20 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
Python数据库小程序源代码
2019/09/15 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
python如何使用代码运行助手
2020/07/03 Python
Looking4Parking美国:全球排名第一的机场停车比较品牌
2019/08/26 全球购物
煤矿安全生产标语
2014/06/06 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
会计求职自荐信
2014/06/20 职场文书
感恩父母主题班会
2015/08/12 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android