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;
}
先暂时以导出为例,导入后续再研究

浙公网安备 33010602011771号