Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal.
Sempre uso um script para exportar dados para xls com PHP.
Me serviu muito, mas, neste caso, preciso apenas gerar o xls e anexar no e-mail.
Passei boa parte de manhã tentando fazer que o script apenas gere a planilha, sem forçar o download, mas, se eu tiro o "Content-Disposition: attachment", dá erro na página.
include("php/phpmailer/PHPMailerAutoload.php");
// Trazendo as informações da tabela:
$header = "";
$dados = "";
$header .= utf8_decode('Serviço'. "\t");
$header .= utf8_decode('Projeto nº'. "\t");
$header .= utf8_decode('Cliente'. "\t");
$header .= utf8_decode('Processo'. "\t");
$header .= utf8_decode('Vencimento'. "\t");
// Select dos processos para fazer o lembrete
$sql_2 = mysqli_query($config, "SELECT ps.data_vencimento_limite, ps.id_processo, IFNULL(NULL, ps.num_processo), ps.descricao, c.nome_razao FROM tb_processos_servicos ps LEFT JOIN tb_processos AS p ON (ps.id_processo = p.id_processo) LEFT JOIN tb_agenda AS c ON (p.cliente = c.id) WHERE ps.data_vencimento_limite <> '0000-00-00' AND ps.data_vencimento_limite <= '$data_atual_db' ORDER BY ps.data_vencimento_limite DESC") or die(mysqli_error($config));
if(@mysqli_num_rows($sql_2) <= 0){
echo "";
}else{
while($r_sql_2 = mysqli_fetch_array($sql_2)){
$vencimento_limite = date("d/m/Y", strtotime($r_sql_2[0]));
$id_processo = $r_sql_2[1];
$num_processo = $r_sql_2[2];
$descricao_sel = utf8_decode($r_sql_2[3]);
$cliente_sel = utf8_decode($r_sql_2[4]);
// Insere a linha
$line = '';
$value = '"' ."$descricao_sel". '"' . "\t";
$value .= '"' ."$id_processo". '"' . "\t";
$value .= '"' ."$cliente_sel". '"' . "\t";
if(empty($num_processo)){
$value .= '""' . "\t";
}else{
$value .= '"' ."'$num_processo". '"' . "\t";
}
$value .= '"' ."$vencimento_limite". '"' . "\t";
$line .= strtr($value,"","") ;
// O trim retira os espaços encontrados no começo e no final de cada linha encontrada.
$dados .= trim($line)."\n";
// Substituindo todas as quebras de linha ao final de cada registro, que por padrão seria \r por uma valor em branco, para que a formatao fique legível
$dados = str_replace("\r","",$dados);
// Caso não encontre nenhum registro, mostra esta mensagem.
if ($dados== "") {
$dados = "\n Nenhum registro encontrado!\n";
}
}
// O trim retira os espaços encontrados no começo e no final de cada linha encontrada.
$dados .= trim($line)."\n";
// Substituindo todas as quebras de linha ao final de cada registro, que por padrão seria \r por uma valor em branco, para que a formatao fique legível
$dados = str_replace("\r","",$dados);
// Cabeçalhos e instruções para geração e download do arquivo:
header("Content-type: application/x-msexcel");
// Este cabeçalho abaixo, indica que o arquivo deve ser gerado para download.
// Se eu tirar ele salva o arquivo na pasta, mas dá erro na página
header("Content-Disposition: attachment; filename=$nome_arquivo");
// No cache, ou seja, não guarda cache, pois é gerado dinamicamente
header("Pragma: no-cache");
// Não expira
header("Expires: 0");
// E aqui geramos o arquivo com os dados mencionados acima!
print "$header\n$dados";
file_put_contents("anexos/".$nome_arquivo,$dados);
//Aqui será enviado o e-mail.
}
mysqli_close($config);
Não sei é possível apenas gerar o xls com esse script, mas ele é tão prático que vou fazer uma última tentativa.
Neste caso ele salva na pasta "anexos", mas abre a caixa do navegador para fazer download.
Desde já agradeço!Carregando comentários...