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
gbasto
(Goncalo Basto)
April 8, 2013, 10:53am
2
gugoan
(Gugoan)
April 9, 2013, 1:12am
3
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.
gugoan
(Gugoan)
April 10, 2013, 12:20am
5
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.
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.
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.
gbasto
(Goncalo Basto)
April 10, 2013, 7:15pm
8
A sugestão do Adrian Lucas gera um ficheiro Excel, não Pdf.
gugoan
(Gugoan)
April 11, 2013, 12:52am
9
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.
Que bacana cara! Vou testar aqui
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