league之csv导出

 

有的时候当我们导出文件时,如果文件比较小可以使用phpexcel,但是当文件太大时就会遇到很多瓶颈(excel条数限制、导出时间太长等)。

这个时候要么使用excel分批次导出,要么就需要使用csv导出。但是,分批次导出还需要合并。纯csv的话,导出的文件又不好看,还要转换成excel。

最近看到一个插件,导出csv文件,但最终形成的是excel,确实方便,记录下

官网是这里:https://packagist.org/packages/league/csv

composer:git下载

1.新建csv文件夹

  

 

2.csv下安装

  composer require league/csv

 3.引用

use League\Csv\Reader;
use League\Csv\Writer;
use SplTempFileObject;

  注意,报错:

  的话,原因是缺少引用。在代码最前面加入include('vendor/autoload.php');即可。

4.看代码

   

include('vendor/autoload.php');
use League\Csv\Reader;
use League\Csv\Writer;

$head = ['名称', '价格'];
$data = getData();
// 转编码
//foreach ($head as $k => $v) {
//   $head[$k] = iconv("UTF-8", "GB2312//IGNORE", $v);
//}

$csv = Writer::createFromFileObject(new \SplTempFileObject());
$csv->insertOne($head);
$csv->insertAll($data);		
$csv->output('csv_demo' . date('Ymd') . '.csv');
die;

function getData(){
	$pdo = new PDO("mysql:host=localhost;dbname=dian","root","");
        $sql = 'SELECT * FROM address';
        $rows = $pdo->query($sql);//执行的是select语句,返回值是PDOStatement对象。
        $rows->setFetchMode(PDO::FETCH_ASSOC);//取消数字id索引
        $rows = $rows->fetchAll();

$data = [];
    foreach($rows as $k=>$v) {
        $data[] = [
            'date'               => $v['comname'],
            'loan_amount'        => $v['comaddress'],
        ];
    }

    return $data;
}

  先暂时以导出为例,导入后续再研究

posted @ 2019-03-04 20:26  谦逊的铅笔  阅读(968)  评论(0编辑  收藏  举报