现在的位置: 首页 > 编程开发 > Php > 编程开发 > 正文

PHP 使用Goodby 对CSV的导入导出

2016年01月20日 Php, 编程开发 ⁄ 共 809字 ⁄ 字号 暂无评论

Goodby CSV是一个内存高效灵活的和可扩展的开源的CSV导入导出的类库,托管于Github上,Goodby有一个特色,就是能方便的通过自定义一个回调函数逐行处理CSV文件(这也造成它的缺点:数据处理时间长)。我把它加入项目中调用,生产环境中原来8M文件要吃2G内存的到现在只需几十M,具体处理时间和自己写的处理回调函数有很大关系。

PHP版本要求:5.3.2以上

扩展要求: PHP必须包含mbstring扩展

Git库地址:https://github.com/goodby/csv

简单使用说明

导入

?php
//引用相关命名空间
use Goodby\CSV\Import\Standard\Lexer;
use Goodby\CSV\Import\Standard\Interpreter;
use Goodby\CSV\Import\Standard\LexerConfig;

$lexerConfig = new LexerConfig(); //创建配置对象
$lexerConfig
->setDelimiter("\t") // 设置列分隔符
->setEnclosure("'") // 设置输出
->setEscape("\\") // 设置转义字符
->setToCharset('UTF-8') // 设置输出编码,默认空不转换
->setFromCharset('GBK'); // 设置CSV文件编码,默认空
$Lexer = new Lexer($LexerConfig); //创建处理对象
$Interpreter = new Interpreter();
$Interpreter->addObserver(function(array $row) {
//逐行读取,每行执行一次本函数,$row行数据
//自定义处理函数主体
}); //添加处理服务(函数)
$Lexer->parse('data.csv', $Interpreter);//第一个参数是CSV文件相对路径

导出

setDelimiter("\t") // 设置列分隔符
->setEnclosure("'") // 设置输出
->setEscape("\\") // 设置转义字符
->setToCharset('UTF-8') // 设置输出文件编码,默认空不转换
->setFromCharset('GBK'); // 设置数据源编码,默认空
$Exporter = new Exporter($config); //创建处理对象
$Exporter->export('data.csv', array(
array('1', 'alice', 'alice@example.com'),
array('2', 'bob', 'bob@example.com'),
array('3', 'carol', 'carol@example.com'),
)); //第一个参数为保存文件地址,第二个为数据源数组

详细用法清阅读Github作者README
文章出自:https://www.jisec.com 转载请保留链接.

给我留言

您必须 [ 登录 ] 才能发表留言!

×