zoukankan      html  css  js  c++  java
  • php导出csv

    ini_set('memory_limit', '-1');
    set_time_limit(0);
    $list = [];
    $title = [
    ];
    $fileName = 'list_' . date('YmdHis') . rand(1,
    10000) . ".csv";  //这里定义表名。简单点的就直接  $fileName = time();
    ob_flush();
    header('Pragma: public');
    header('Expires: 0');
    header('Cache-Control:must-revalidate, post-check=0, pre-check=0');
    header('Content-Type:application/force-download');
    header('Content-Type:application/vnd.ms-execl.numberformat:@;charset=GB2312;');
    header('Content-Type:application/octet-stream');
    header('Content-Type:application/download');;
    header('Content-Disposition: attachment;filename="' . $fileName . '"');
    header('Content-Transfer-Encoding:binary');
    $index = 0;
    $fp = fopen('php://output', 'a'); //打开php文件句柄,php://output表示直接输
    foreach ($title as $k => $v) {
    $title[$k] = iconv("UTF-8", "GBK//IGNORE",
    $v); //将utf-8编码转为gbk。理由是: Excel 以 ANSI 格式打开,不会做编码识别。如果直接用 Excel 打开 UTF-8 编码的 CSV 文件会导致汉字部分出现乱码。
    }
    fputcsv($fp, $title); //fputcsv() 函数将行格式$head化为 CSV 并写入一个打开的文件$fp。
    $data = []; //要导出的数据的顺序与表头一致;提前将最后的值准备好(比如:时间戳转为日期等)
    $list = $list()['list']->toArray();
    foreach ($list as $key => $item) {
    if ($index == 10000) {
    $index = 0;
    ob_flush();//清除内存
    flush();
    }
    $index++;
    $data = []

    foreach ($data as $k => $i) { //$item为一维数组哦
    $data[$k] = iconv("UTF-8", "GBK//IGNORE", $i); //转为gbk的时候可能会遇到特殊字符‘-’之类的会报错,加 ignore表示这个特殊字符直接忽略不做转换。
    }
    fputcsv($fp, $data);
    unset($data);
    }
    ob_flush();
    flush();
    fclose($fp);
    exit; //记得加这个,不
  • 相关阅读:
    redhat 6安装详解
    使用pidstat查看进程资源使用情况
    (转)调优 DB2 UDB v8.1 及其数据库的最佳实践
    (转)LVS安装使用详解
    (转)[小工具] Linux下列格式化工具
    (转)zabbix3.4使用percona-monitoring-plugins监控mysql
    (转)zabbix之生产案例
    (转)CentOS7 LVM添加硬盘及扩容
    (转)计算机网络基础知识总结
    (转)网络基础之网络协议篇
  • 原文地址:https://www.cnblogs.com/huangguojin/p/14067931.html
Copyright © 2011-2022 走看看