Yii Framework Forum

Exportar Relatórios


(Adrian Lucas) #1

Utilizando a mesma interface do _search criei alguns relatórios, onde o usuário escolhe alguns parâmetros e clicando em Gerar, o relatório é visualizado abaixo, na própria página. Até aí tudo perfeito. O problema é que gostaria também que cada relatório desse, mostrado abaixo, também mostrasse um botão para exportar pra Excel.

No controller criei o actionRelatorios que roda perfeito




public function actionRelatorios() {

    	$model = new rel_segunda('search');

    	$model->unsetAttributes();

    	if (isset($_GET['rel_segunda'])) {

        	$model->attributes = $_GET['rel_segunda'];

    	}

    	$this->pageTitle = Yii::app()->name . ' - Relatórios';  	

    	$this->render('relatorios', array('model' => $model));

}



Então tentei criar depois um actionresumoExcel para tentar exportar o relatório que está ativo, mais nada consigo.




public function actionresumoExcel() {

    	$model = new rel_segunda();

    	$model->unsetAttributes();

    	if (isset($_GET['rel_segunda']))

        	$model->attributes = $_GET['rel_segunda'];

  	

    	Yii::app()->request->sendFile('Resumo.xls', $this->renderPartial('relatorios/resumo', array(

                	'model' => $model

                    	), true)

    	);

	}



Ele não consegue visualizar as variáveis do model, e não retorna nada. Alguém pode me ajudar por favor neste probleminha??


(Gugoan) #2

Você pode usar a extensão kartik\export.

Nela vc define o mesmo dataprovider do gridview por exemplo, e o relatório em Excel irá possuir as mesmas colunas


(Newerton Araujo) #3

Adrian,

Você não pode colocar um text/html dentro do .xls

Você precisa setar qual linha e coluna você vai popular o .xls

Usa o ‘export’ do GridView do Kartik, ou usar o PHPOffice/PhpSpreadsheet (https://github.com/PHPOffice/PhpSpreadsheet)