Imprimir E Exportar Informações Do Grid

Olá Pessoal,

Estou desenvolvendo um projeto onde tem um botão que tem as seguintes opções: Imprimir, Salvar em PDF e Exportar para Excel as informações de um $dataprovider.

Alguém saberia uma extensão que faz tudo isso ou extensões individuais que seja simples e eficaz.

Agradeço

http://www.yiiframework.com/extensions/?tag=export

Olá,

A unica que testei até hoje foi a extensão exportablegridbehavior e funcionou blz cara (exporta inclusive com os dados após filtrar a grid).

Abraços

Pelo que vi este exporta para excel ou pdf tb.

Opa…

Não, essa extensão exporta apenas para Excel (CSV). Mas ela é bem ‘descomplicada’ cara, acho isso bacana…

Amigo um dia desses estava precisando também exportar para excel e vi uma forma interessante que o Yii já vem incluso. Abaixo segue o exemplo que fiz, no meu caso serviu bastante e não precisei baixar nada.

No controller criei a função abaixo




    public function actionCandExcel() {

        $total = 1;

        $tamanhofonte = "14";

        $sql = 'SELECT cd.sexo, cd.nome, cd.foneresid, cd.fonecel, cd.fonerecado, st.nome AS setor

                    FROM docpendente dp

                    JOIN candidatos cd ON cd.idcandidatos = dp.candidatos

                    JOIN examesmedicos ex ON ex.candidatos = dp.candidatos

                    JOIN setor st ON st.idsetor = ex.setor

                    WHERE cd.situacao = 9 AND bloqueio = "N"

                    ORDER BY st.nome, cd.sexo ASC';

        $conn = Yii::app()->db->createCommand($sql)->queryAll();

        $html = '

            <html>

                <head>

                    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

                    <meta http-equiv="Content-Language" content="pt-br, pt">

                    <title>Candidatos com Documentações OK</title>

                </head>

                <body> 

                    <table style="text-align: left;" align="center" border="0" width="750" >

                        <tbody>

                            <tr>

                                <td style="text-align: center" colspan="7"><span style="font-size: ' . $tamanhofonte . ';"><b>Candidatos com Documentações OK</b></td>

                            </tr>                            

                        </tbody>

                    </table>

            <table style="text-align: left; border: 1px solid #9C9C9C;" align="center" border="1" width="750" frame="border" rules="rows">      

            <thead>

            <tr>

                <td style="background: #EEEEE0"><span style="font-size: ' . $tamanhofonte . ';"><b>Seq.</b></td>

                <td style="text-align: center; background: #EEEEE0"><span style="font-size: ' . $tamanhofonte . ';"><b>Sexo</b></td>

                <td style="background: #EEEEE0"><span style="font-size: ' . $tamanhofonte . ';"><b>Nome</b></td>                             

                <td style=" text-align: center;background: #EEEEE0"><span style="font-size: ' . $tamanhofonte . ';"><b>Fone Res.</b></td>    

                <td style="text-align: center; background: #EEEEE0"><span style="font-size: ' . $tamanhofonte . ';"><b>Fone Cel.</b></td>

                <td style="text-align: center; background: #EEEEE0"><span style="font-size: ' . $tamanhofonte . ';"><b>Fone Contato</b></td>   

                <td style="text-align: center; background: #EEEEE0"><span style="font-size: ' . $tamanhofonte . ';"><b>Setor</b></td>

            </tr>';

        foreach ($conn as $row) {

            $html.='

            <tr>

                <td style="text-align: center;"><span style="font-size: ' . $tamanhofonte . ';">' . $total++ . '</td>

                <td style="text-align: center;"><span style="font-size: ' . $tamanhofonte . ';">' . $row['sexo'] . '</td>

                <td><span style="font-size: ' . $tamanhofonte . ';">' . $row['nome'] . '</td>                

                <td style="text-align: center;"><span style="font-size: ' . $tamanhofonte . ';">' . $row['foneresid'] . '</td>    

                <td style="text-align: center;"><span style="font-size: ' . $tamanhofonte . ';">' . $row['fonecel'] . '</td>

                <td style="text-align: center;"><span style="font-size: ' . $tamanhofonte . ';">' . $row['fonerecado'] . '</td> 

                <td><span style="font-size: ' . $tamanhofonte . ';">' . $row['setor'] . '</td>

            </tr>';

        }

        $html.='</body>

            </html> ';

        echo $html;

        Yii::app()->request->sendFile('Candidatos com Documentações OK.xls', $html);// Colocando o tipo do artivo com .pdf ele já imprimi em PDF.

    }



E no view criei o botão para imprimir.




            <td style="text-align: center">

                <Font color="#00008B"><b>Candidatos por Função</b><br></font>

                <?php echo '<a href="' . $this->createUrl('/candidatos/CandExcel') . '" ><img src="' . Yii::app()->baseUrl . '/images/Boy.png"/>'; ?>

            </td>



Como disse acima, no meu caso deu certo e serviu como uma beleza. Claro que existe outras formas mais rápidas de utilização, mas nesse caso o que me chamou a atenção é porque já é nativo do framework.

Espero ter ajudado.:D

Legal Adrian,

Mais estou tendo problema com pdf ele nao abre pois fala que não foi decodificado corretamente, e no arquivos do excel tb aparece um erro falando que o tipo de arquivo esta errado… ai dou ok ai abre mais o pdf não.

A sugestão do Adrian Lucas gera um ficheiro Excel, não Pdf.

Que bacana cara! Vou testar aqui :D

Galera,

Alguém conhece alguma maneira ou se existe esta possibilidade de enviar as informações para serem impressa a partir do $this->renderPartial().

Ou alguma maneira de enviar para impressora a saida de um tcpdf (PDF) pois estou usando esta classe para gerar o pdf.

Agradeço