有的时候当我们导出文件时,如果文件比较小可以使用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 LeagueCsvReader; use LeagueCsvWriter; use SplTempFileObject;
注意,报错:
的话,原因是缺少引用。在代码最前面加入include('vendor/autoload.php');即可。
4.看代码
include('vendor/autoload.php'); use LeagueCsvReader; use LeagueCsvWriter; $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; }
先暂时以导出为例,导入后续再研究