Não fazer download ao exportar para Xls utilizando PHP
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!Discussão (0)
Carregando comentários...