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 相关文章推荐
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
PHP define函数的使用说明
Aug 27 PHP
javascript 小型动画组件与实现代码
Jun 02 PHP
php学习笔记之 函数声明
Jun 09 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
Jan 09 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
CodeIgniter与PHP5.6的兼容问题
Jul 16 PHP
Yii实现的多级联动下拉菜单
Jul 13 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
PHP用户验证和标签推荐的简单使用
Oct 31 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
May 28 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 smarty 二级分类代码和模版循环例子
2011/06/16 PHP
php中动态修改ini配置
2014/10/14 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
关于JavaScript命名空间的一些心得
2014/06/07 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
python调用fortran模块
2016/04/08 Python
python抓取并保存html页面时乱码问题的解决方法
2016/07/01 Python
Python编程实战之Oracle数据库操作示例
2017/06/21 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
Python正则表达式指南 推荐
2018/10/09 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
英语自我评价范文
2014/01/24 职场文书
秋天的雨教学反思
2014/04/27 职场文书
2014年建筑工程工作总结
2014/12/03 职场文书
公务员考察材料
2014/12/23 职场文书
单位接收函格式
2015/01/30 职场文书
数学教师个人工作总结
2015/02/06 职场文书
市场部岗位职责范本
2015/04/15 职场文书
行政二审代理词
2015/05/25 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书
Python爬虫基础初探selenium
2021/05/31 Python