关于数据导出成Csv格式文件的2个问题(乱码和数据条数限制的问题)

大家新年好,

我是刚用yii的新手,看了导出数据成csv格式的demo后,自己写了下,但是碰到2个问题,

1.导出来的数据中文全是乱码,应该怎么设置呢?

2.代码自动设置成分页格式,导出来的数据只有10条,应该怎么设置去掉这个,导出所有符合条件的数据($csv->exportCurrentPageOnly();是针对这个函数设置吗,应该怎么设置呢?)

贴出代码,请教大家

    $sql = 'SELECT b.nick, b.rated_nick, b.item_title, b.item_price, b.content, b.reply FROM `voc_rate_result` a,`voc_rate_detail` b 


            WHERE a.tb_user_id = b.tb_user_id 


            AND a.id = b.rate_id 


            AND a.is_process=4';


    $res = Yii::app()->db->createCommand($sql)->query();





    $dataProvider=new CSqlDataProvider($sql, array(


        'totalItemCount'=>$count,


        'pagination'=>array(


            'pageSize'=>10,


        ),


    ));


    


    





    $filename = 'somewriteablefile.csv';


    $csv = new ECSVExport($dataProvider);


    $csv->exportCurrentPageOnly(); // if not set will loop through all pages!


    $csv->setOutputFile($filename);


    $csv->toCSV($filename);

中文乱码应该是数据库存储的问题 你的数据表编码 和数据表单输入时的网页编码应该一致 不然就比较棘手了 (可以试下iconv 转码函数)

对于分页问题:导出时一般是导入一个符合特定条件的结果集 全部都导出对于大数据量是个灾难 会很耗内存的

已存在的扩展可以做这种事 : 根据条件分页导出 比如在你的admin.php 视图(用gii生成crud时会有这个视图) 在对应的控制器中的某个点 导出数据(分页功能可以再dataProvider构成时禁用掉 看下源码 有个属性可以禁用掉的 pagination 属性设置成false就行了)这个扩展或许可以帮助你 :)

可以在某次过滤后把得到的结果集导成 excel、cvs ,pdf等格式(pdf中文乱码现象比较严重 )

谢谢你的指点,导出的地方设置好了,至于第一个问题是要添加一个bom头,也搞定了。