使用yii增强将报告导出到csv/excel的功能

使用yii增强将报告导出到csv/excel的功能,yii,phpmyadmin,Yii,Phpmyadmin,我的系统在小型数据库中运行良好,在数据加载达到一定限制“500内部服务器错误”后,我的报告是从至少5个phpmyadmin表生成的。我希望使用yii将报告从phpmyadmin导出到csv/excel以用于大型数据库 您可以使用yiiexcell扩展:它是PHPExcel的简单包装我使用此扩展导出到CSV。 我已经创建了一个可以附加到任何需要导出的控制器的操作 <?php class Csv extends CAction { public $field_list;

我的系统在小型数据库中运行良好,在数据加载达到一定限制“500内部服务器错误”后,我的报告是从至少5个phpmyadmin表生成的。我希望使用yii将报告从phpmyadmin导出到csv/excel以用于大型数据库

您可以使用yiiexcell扩展:它是PHPExcel的简单包装

我使用此扩展导出到CSV。 我已经创建了一个可以附加到任何需要导出的控制器的操作

<?php

class Csv extends CAction {

    public $field_list;

    public function run() {
        $controller = $this->getController();

         /* Disable the logging because it should not run on this function */
        foreach (\Yii::app()->log->routes as $route)        {
            if ($route instanceof \CWebLogRoute) {
                $route->enabled = false;
            }
        }
        \Yii::import('core.extensions.ECSVExport.ECSVExport');
        //use the existing filters
        $model_name = $controller->modelName();
        $model = new $model_name('search');
        $dataProvider = $model->search();

        $criteria = $dataProvider->criteria;

        //remove the pagination
        $dataProvider->setPagination(false);

        //changing the criteria to only select what we want
        $criteria->select = implode(',', $this->field_list);
        $dataProvider->setCriteria($criteria);

        //export to CSV
        $csv = new \ECSVExport($dataProvider);
        if(isset($_GET['test'])) {
            echo $csv->toCSV();
        } else {
            \Yii::app()->getRequest()->sendFile($controller->modelName() . '_'.date('Y-m-d').'.csv', $csv->toCSV(), "text/csv", false);
            exit();
        }
    }
}

我使用与控制器中相同的搜索,因为它适合我,而且因为我使用,我实际上可以准确导出屏幕上的内容。将字段列表更改为您需要的内容。请记住授予访问csvAction功能的权限。

500错误是指向配置类型错误的web服务器错误。您需要查看web服务器日志以了解错误的详细信息。
/**
 * @return array actions to be mapped to this controller
 */
public function actions(){
   return array(
    'csv'=>array(
          'class'=>'core.components.actions.Csv',
          'field_list'=>array('t.id', 't.name', 't.status'),
        ),
    );
}
/**