Yii2 csv数据导出扩展 [ 2.0 版本 ]
yii2-thecsv(Yii2框架csv数据导出扩展)
github: https://github.com/13552277443/yii2-thecsv
1、安装
运行 php composer.phar require m35/thecsv
或
添加 "m35/thecsv": "*"
2、使用
<?php
use m35\thecsv\theCsv;
theCsv::export('tableName'); // return true if success
3、参数及示例
3.0、参数列表
3.0.1、string类型
直接指定表名称,下载该表所有数据,自动生成表字段名称。
3.0.2、array类型参数
table
:数据表名称 (string
)fields
:要导出的表字段 (array
)exceptFields
:是否是排除字段模式,默认false(bool
)header
:自定义表头(array
)condition
:导出表条件(mixed
) 请参考http://www.yiiframework.com/doc-2.0/yii-db-query.html#where()-detaillimit
:限制数量(int
)offset
:偏移(int
)orderby
:排序(mixed
) 请参考http://www.yiiframework.com/doc-2.0/yii-db-querytrait.html#orderBy()-detailname
:自定义文件名(string
)sql
:自定义SQL语句(string
)bind
:与sql结合绑定参数(array
)target
:导出目录,如果设置target,则默认行为由下载变为保存文件到服务器(string
)fp
:直接导出数据到指定的资源(resource
)data
:自定义导出数据(array
)query
:Yii2框架Query类型对象(yii\db\Query
) 请参考http://www.yiiframework.com/doc-2.0/yii-db-query.htmlreader
:Yii2框架DataReader类型对象(yii\db\DataReader
) 请参考http://www.yiiframework.com/doc-2.0/yii-db-datareader.html
3.1、示例:导出数据表(以user表为例子)
3.1.1、导出数据表完整数据
theCsv::export('user');
3.1.2、导出user表的用户名和密码
theCsv::export([
'table' => 'user',
'fields' => ['username', 'password'],
]);
3.1.3、导出user表除status字段外的所有数据
theCsv::export([
'table' => 'user',
'fields' => ['status'],
'exceptFields' => true,
]);
3.1.4、导出user表的用户名和密码,自定义表头
theCsv::export([
'table' => 'user',
'fields' => ['username', 'password'],
'header' => ['账户', '密码'],
]);
3.1.5、导出user表的用户名和密码,不要表头
theCsv::export([
'table' => 'user',
'fields' => ['username', 'password'],
'header' => 'no',
]);
3.1.6、导出user表有效用户,使用condition
theCsv::export([
'table' => 'user',
'condition' => ['status' => 1],
]);
condition请参考http://www.yiiframework.com/doc-2.0/yii-db-query.html#where()-detail
3.1.7、导出user表有效用户,使用orderby和limit
theCsv::export([
'table' => 'user',
'condition' => ['status' => 1],
'orderby' => 'id DESC',
'limit' => 10,
]);
3.1.8、自定义SQL
theCsv::export([
'sql' => 'SELECT * FROM user',
]);
3.1.9、自定义SQL,绑定参数
theCsv::export([
'sql' => 'SELECT * FROM user WHERE id = :id AND status = :status',
'bind' => [':id' => 1, ':status' => 1],
]);
3.1.10、使用Query
theCsv::export([
'query' => (new \yii\db\Query)->from('user'),
]);
3.1.11、使用reader
theCsv::export([
'reader' => \Yii::$app->getDb()->createCommand('SELECT * FROM user')->query(),
]);
3.2、示例:导出数据
theCsv::export([
'data' => [
['a', 'b', 'c'],
['A', 'B', 'C'],
],
]);
3.3、示例:其他
3.3.1
theCsv::export([
'data' => [
['a', 'b', 'c'],
['A', 'B', 'C'],
],
'name' => 'data.csv',
]);
3.3.2
theCsv::export([
'data' => [
['a', 'b', 'c'],
['A', 'B', 'C'],
],
'name' => 'data.csv', // 自定义导出文件名称
'target' => './', // 如果指定导出目录,则默认行为从下载变为保存到指定目录
]);
3.3.3
$fp = fopen('./data.csv', 'w');
theCsv::export([
'data' => [
['a', 'b', 'c'],
['A', 'B', 'C'],
],
'fp' => $fp, // 如果指定fp资源,则默认行为从下载变为直接写入该资源
]);
m35
注册时间:2015-07-09
最后登录:2016-04-18
在线时长:0小时52分
最后登录:2016-04-18
在线时长:0小时52分
- 粉丝1
- 金钱10
- 威望10
- 积分110
共 11 条评论
经过测试表现不错
谢过分享,晚点去试试
我想问一下,导出的汉字乱码怎么解决呢?
你用2010打开就不会了,2007就会
@楼主,请问该类,能定制csv表的样式么
导出乱码怎么解决
为什么导出没有分卷的导出??
3.1.2、导出user表的用户名和密码 这里我就运行不成功了,不知道什么原因。前面全表导出是可以的。
可以设置为文本格式吗,
导出整张表成功,sql语句导出失败,说什么没有$db这个变量,题主是我哪里没有做好么...
![BV0{S]DQH84
)I[6Q5D_5%6.png](/uploads/images/201708/23231136278_thumb.png "BV0{S]DQH84
)I[6Q5D_5%6.png")最后根据提示把这两行代码提上去,继续照着教程练习,ok,都成功了
有问题的扩展
这里只有$parameter是字符串的情况下才生成$tables
if (is_string($parameter)) { $parameter = ['table' => $parameter]; $db= \Yii::$app->getDb(); $tables = $db->schema->getTableNames(); }
而在$parameter数组的时候并没有生成$tables所以除了导出全表不会报错有条件的都报错
解决方法:将下面两条复制到判断是否字符串语句外