我的系统对小型数据库工作正常并且我的报告是在数据加载'500内部服务器错误'的某些限制之后从至少5个phpmyadmin表生成的。我想从phpmyadmin增强导出报告到csv / excel将yii用于更大的数据库。
答案 0 :(得分:0)
你可以使用yiiexcell扩展:http://www.yiiframework.com/extension/yiiexcel/它是PHPExcel的简单包装http://phpexcel.codeplex.com/releases/view/107442
答案 1 :(得分:0)
我使用此扩展程序导出为CSV。 http://www.yiiframework.com/extension/csvexport/ 我创建了一个动作,可以附加到我需要导出的任何控制器上。
<?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();
}
}
}
field_list是我需要导出的字段。
对于我添加的控制器
/**
* @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'),
),
);
}
/**
我使用与控制器相同的搜索,因为它适合我,因为我使用http://www.yiiframework.com/extension/remember-filters-gridview/我实际上可以准确导出屏幕上的内容。将字段列表更改为您需要的。请记住提供对csvAction函数的访问权。