Gerando arquivo Excel de tabelas html com javascript/jquery


Trabalhando no mesmo projeto do post passado com aquela mesma ideia de fazer algo dinâmico precisei gerar arquivos excel dos relatórios do sistema Então a proposta foi:

//Inclua na sua pagina o jquery e o js do plugin
<script src="js/jquery.js" type="text/javascript"></script>

Função para gerar o excel de uma determinada tabela

<script>
function Excel(tabela,form)
{

	$("#Tabela_Excel").val( $("<div>").append( $("#" + tabela).eq(0).clone()).html());
	$("#" + form).submit();

}
</script>

Pagina que contem a tabela com um id! Ao final da tabela um link e um form e 2 campos hidden!
Ao clicar função js executa o subimit para um arquivo de auxilio: excel.php


<html>
<body>

<table id="tabela">
  <tr>
    <td>Nome</td>
    <td>Valor</td>
  </tr>
  <tr>
    <td>Pedro</td>
    <td>R$ 250,00</td>
  </tr>
  <tr>
    <td>Julia</td>
    <td>R$ 300,00</td>
  </tr>
</table>

<form  name="FormPostExcel' method="post" action="excel.php"  id='FormPostExcel' >
       <a href="javascript:Excel('tabela','FormPostExcel');">Gerar Arquivo</a>
     <input type="hidden" id="TabelaExcel" name="TabelaExcel" />
     <input name="nome_excel" type="hidden" id="nome_excel" value="FluxoDeCaixa" />
     </form>

</body>
</html>

O arquivo excel.php onde ocorre o Post força através do header a abertura de um arquivo excel com o nome do $_POST do campo: nome_excel concatenado com a data e o conteúdo do excel o $_POST do campo TabelaExcel!

<?
header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: filename=" . $_POST['nome_excel']. "_".date("dmY").".xls");
header("Pragma: no-cache");
header("Expires: 0");

$tabela_excel = utf8_encode($_POST['TabelaExcel']);
echo $tabela_excel;
?>

4 Comments

  1. Andre, tem sim!

    Ao inves de dar um echo $tabela_excel vocÊ faz:

    $handle = fopen(“diretororio/arq.xls”,”w”);
    chmod(“diretororio/arq.xls”, 0777);
    fwrite($handle,$tabela_excel);
    fclose($handle);

  2. muiiito bom mesmo, mas sera possivel ao criar o xls na minha maquina local, ele criar numa maquina remota? porque eu trabalho em uma empresa onde os pcs estao em um dominio, então na verdade eu adaptei seu codigo no que eu fiz de um ponto eletronico, ao usuario colocar seu login e clicar no GERAR RELATORIO o relatorio em xls é enviado para meu encarregado, sera possivel isso?

  3. cara, tenho dados gerados por javascript, mais especificamente um gráfico, este gráfico não é lançado para o excel sabe me dizer porque?
    Obrigado

1 Trackback / Pingback

  1. Paul Smith Solbriller

Leave a Reply

Seu e-mail não será publicado.


*