0
I have a system that generates forms for the client, and when it fills such automatically saves an Excel with the data, but when I open Excel appears the error:
O formato de arquivo e a extensão de 'Nome do arquivo'.xls' não correspondem.
O arquivo pode estar corrompido ou não ser seguro. Não o abra, a menos que
confie na fonte. Quer abri-lo mesmo assim?
NOTE: Even appearing the error it opens normally by clicking on the open, but when attaching in some email it corrupts
The code I use to generate Excel and the following:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
</head>
<body>
<?php
date_default_timezone_set("Brazil/East");
include_once("../conn/conexao.php");
include_once("../PHPMailer/class.phpmailer.php");
$link = $_POST["link"];
$idUsuario = $_POST["id_usuario"];
$idCliente = $_POST["id_cliente"];
$nome = $_POST["nome"];
$responsavel = $_POST["responsavel"];
$telefone = $_POST["telefone"];
$cpf = removeAcentos($_POST["cpf"]);
$cpf = str_replace("." , "" , $cpf ); // Primeiro tira os pontos
$cpf = str_replace("," , "" , $cpf);
$cpf = str_replace("-" , "" , $cpf);
$ie = $_POST["ie"];
$endereco = $_POST["endereco"];
$bairro = $_POST["bairro"];
$enderecoEntrega = $_POST["enderecoentrega"];
$cidade = $_POST["cidade"];
$estado = $_POST["estado"];
$cep = $_POST["cep"];
$email = $_POST["email"];
$data = date("d-m-Y");
$hora = date("s");
$cotacao = $_POST["cotacao"];
$diasUteis = $_POST["diasUteis"];
$valorFrete = $_POST["valorFrete"];
$usuario_rodrigo =array('SC','RS');
$usuario_cintia =array('SP','RJ','ES','MG');
$usuario_forfun =array('BA','SE','PE','AL','PB','RN','CE','PI','MA');
//Verifica se o usuario existe ou não
$sql = mysqli_query($conn, "SELECT * FROM clientes WHERE cpf = '{$cpf}'") or
print mysql_error();
if(mysqli_num_rows($sql)<1) {
$query = "INSERT INTO clientes (nome, responsavel, endereco,
endereco_entrega, cpf, telefone, cidade, estado, ie, cep, email, link,
bairro) VALUES('$nome', '$responsavel', '$endereco', '$enderecoEntrega',
'$cpf', '$telefone', '$cidade', '$estado', '$ie', '$cep', '$email', '$link'
, '$bairro')";
$processaCliente = mysqli_query($conn,$query);
}else {
$query = "UPDATE clientes SET nome='$nome', responsavel =
'$responsavel', endereco = '$endereco', endereco_entrega =
'$enderecoEntrega', telefone = '$telefone', cidade = '$cidade', estado =
'$estado', ie = '$ie', cep = '$cep', email = '$email', bairro = '$bairro',
link = '$link' WHERE cpf = '$cpf'";
$processaCliente = mysqli_query($conn,$query);
}
//Criar a tabela HTML em formato de planilha
$html .= "";
$html .= "<table>";
$html .= "<tr>";
$html .= "<td colspan='7' style='height:0.3cm;'></td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td colspan='2' style='text-align:center;'><b><img src='https://i.imgur.com/BZn58Qj.png' alt='' /></b></td>";
$html .= "</tr>";
$html .= "</table>";
$html .= "<table>";
$html .= "<tr>";
$html .= "<td colspan='4'></td>";
$html .= "<td colspan='6' style=' font-size:16px;'><b>Data de Saida:</b></td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td colspan='4'></td>";
$html .= "<td colspan='3' style=' border:1px solid #c4c4c4; font-size:16px; height:1cm;'><b></b></td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td colspan='7' style='height:0.8cm;'></td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td colspan='4'></td>";
$html .= "<td colspan='3' style=' border:1px solid #333;'><b>Vendedor:</b> </td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td colspan='4'></td>";
$html .= "<td colspan='3' style=' border:1px solid #333;'><b>Vendas:</b> </td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td colspan='7' style='height:0.8cm;'></td>";
$html .= "</tr>";
$html .= "</table>";
$html .= "<table border='1'>";
$html .= "<tr>";
$html .= "<td colspan='7' style='text-align:center; font-size:16px;'><b>Solicitação de Compra</b></td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td><b>ID:</b></td>";
$html .= "<td colspan='6' style='text-align:left;'>$idCliente</td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td><b>Nome:</b></td>";
$html .= "<td colspan='6'>$nome</td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td><b>Responsavel:</b></td>";
$html .= "<td colspan='6'>$responsavel</td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td><b>Endereço:</b></td>";
$html .= "<td colspan='6'>$endereco</td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td><b>Endereço de Entrega:</b></td>";
$html .= "<td colspan='6'>$enderecoEntrega</td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td><b>Bairro de Entrega:</b></td>";
$html .= "<td colspan='6'>$bairro</td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td><b>Cidade e estado:</b></td>";
$html .= "<td colspan='6'>$cidade - $estado</td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td><b>Cep:</b></td>";
$html .= "<td colspan='6' style='text-align:left;'>$cep</td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td><b>Telefone:</b></td>";
$html .= "<td colspan='6' style='text-align:left;'>$telefone</td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td><b>Cpf / Cnpj:</b></td>";
$html .= "<td colspan='6' style='text-align:left;'>$cpf</td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td><b>Inscrição Estadual:</b></td>";
$html .= "<td colspan='6' style='text-align:left;'>$ie</td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td><b>Email:</b></td>";
$html .= "<td colspan='6' style='text-align:left;'>$email</td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td colspan='7' style='height:0.5cm;'> </td>";
$html .= "</tr>";
$produtos = isset($_POST["produtos"]) ? $_POST["produtos"] : '';
if($produtos != ''){
for ($i = 0; $i < count($produtos['nome']); $i++) {
$nomeProduto = $produtos['nome'][$i];
$qnt1Produto = $produtos['qnt1'][$i];
$qnt2Produto = $produtos['qnt2'][$i];
$qnt3Produto = $produtos['qnt3'][$i];
$qnt4Produto = $produtos['qnt4'][$i];
$qnt5Produto = $produtos['qnt5'][$i];
$valor1Produto = $produtos['valor1'][$i];
$valor2Produto = $produtos['valor2'][$i];
$valor3Produto = $produtos['valor3'][$i];
$valor4Produto = $produtos['valor4'][$i];
$valor5Produto = $produtos['valor5'][$i];
$resultado1Produto = $produtos['resultado1'][$i];
$resultado2Produto = $produtos['resultado2'][$i];
$resultado3Produto = $produtos['resultado3'][$i];
$resultado4Produto = $produtos['resultado4'][$i];
$resultado5Produto = $produtos['resultado5'][$i];
$totalProduto = $produtos['total'][$i];
$qntProduto = $produtos['finalQntd'][$i];
$qntFinal = $produtos['finalQntdProduto'][1];
$finalProdutos = $produtos['final'][0];
$finalPedido = $produtos['final'][1];
$htmlProdutos[] =
'<tr>' .
'<td colspan="7" style="text-align:center; font-size:16px;"><b>' . $nomeProduto . '</b></td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>Tamanho</b></td>' .
'<td colspan="2" style="text-align:center;"><b>Qtd</b></td>' .
'<td colspan="2" style="text-align:center;"><b>Valor unit</b></td>' .
'<td colspan="2" style="text-align:center;"><b>Valor total</b></td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>P</b></td>' .
'<td colspan="2" style="text-align:center;">' . $qnt1Produto . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $valor1Produto . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $resultado1Produto . '</td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>M</b></td>' .
'<td colspan="2" style="text-align:center;">' . $qnt2Produto . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $valor2Produto . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $resultado2Produto . '</td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>G</b></td>' .
'<td colspan="2" style="text-align:center;">' . $qnt3Produto . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $valor3Produto . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $resultado3Produto . '</td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>GG</b></td>' .
'<td colspan="2" style="text-align:center;">' . $qnt4Produto . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $valor4Produto . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $resultado4Produto . '</td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>XG</b></td>' .
'<td colspan="2" style="text-align:center;">' . $qnt5Produto . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $valor5Produto . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $resultado5Produto . '</td>' .
'</tr>' .
'<tr>' .
'<td colspan="1" style="text-align:center;"><b> QTD Total: </b></td>' .
'<td colspan="2" style="text-align:center;"><b>' . $qntProduto . '</b></td>' .
'<td colspan="2" ></td>' .
'<td colspan="2" style="text-align:center;"><b>R$' . $totalProduto . '</b></td>' .
'</tr>' .
'<tr>' .
'<td colspan="7" style="height:0.5cm;"> </td>' .
'</tr>';
}
}
$produtosInfantis = isset($_POST["produtosInfantis"]) ? $_POST["produtosInfantis"] : '';
if($produtosInfantis != ''){
for ($i = 0; $i < count($produtosInfantis['nome']); $i++) {
$nomeProdutoInfantil = $produtosInfantis['nome'][$i];
$qnt1ProdutoInfantil = $produtosInfantis['qnt1'][$i];
$qnt2ProdutoInfantil = $produtosInfantis['qnt2'][$i];
$qnt3ProdutoInfantil = $produtosInfantis['qnt3'][$i];
$qnt4ProdutoInfantil = $produtosInfantis['qnt4'][$i];
$qnt5ProdutoInfantil = $produtosInfantis['qnt5'][$i];
$qnt6ProdutoInfantil = $produtosInfantis['qnt6'][$i];
$valor1ProdutoInfantil = $produtosInfantis['valor1'][$i];
$valor2ProdutoInfantil = $produtosInfantis['valor2'][$i];
$valor3ProdutoInfantil = $produtosInfantis['valor3'][$i];
$valor4ProdutoInfantil = $produtosInfantis['valor4'][$i];
$valor5ProdutoInfantil = $produtosInfantis['valor5'][$i];
$valor6ProdutoInfantil = $produtosInfantis['valor6'][$i];
$resultado1ProdutoInfantil = $produtosInfantis['resultado1'][$i];
$resultado2ProdutoInfantil = $produtosInfantis['resultado2'][$i];
$resultado3ProdutoInfantil = $produtosInfantis['resultado3'][$i];
$resultado4ProdutoInfantil = $produtosInfantis['resultado4'][$i];
$resultado5ProdutoInfantil = $produtosInfantis['resultado5'][$i];
$resultado6ProdutoInfantil = $produtosInfantis['resultado6'][$i];
$totalProdutoInfantil = $produtosInfantis['total'][$i];
$qntProdutoInfantil = $produtosInfantis['finalQntd'][$i];
$htmlProdutosInfantis[] =
'<tr>' .
'<td colspan="7" style="text-align:center; font-size:16px;"><b>' . $nomeProdutoInfantil . '</b></td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>Tamanho</b></td>' .
'<td colspan="2" style="text-align:center;"><b>Qtd</b></td>' .
'<td colspan="2" style="text-align:center;"><b>Valor unit</b></td>' .
'<td colspan="2" style="text-align:center;"><b>Valor total</b></td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>6</b></td>' .
'<td colspan="2" style="text-align:center;">' . $qnt1ProdutoInfantil . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $valor1ProdutoInfantil . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $resultado1ProdutoInfantil . '</td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>8</b></td>' .
'<td colspan="2" style="text-align:center;">' . $qnt2ProdutoInfantil . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $valor2ProdutoInfantil . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $resultado2ProdutoInfantil . '</td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>10</b></td>' .
'<td colspan="2" style="text-align:center;">' . $qnt3Produto . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $valor3Produto . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $resultado3Produto . '</td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>12</b></td>' .
'<td colspan="2" style="text-align:center;">' . $qnt4ProdutoInfantil . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $valor4ProdutoInfantil . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $resultado4ProdutoInfantil . '</td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>14</b></td>' .
'<td colspan="2" style="text-align:center;">' . $qnt5ProdutoInfantil . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $valor5ProdutoInfantil . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $resultado5ProdutoInfantil . '</td>' .
'</tr>' .
'<tr>' .
'<td style="text-align:center;"><b>16</b></td>' .
'<td colspan="2" style="text-align:center;">' . $qnt6ProdutoInfantil . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $valor6ProdutoInfantil . '</td>' .
'<td colspan="2" style="text-align:center;">R$' . $resultado6ProdutoInfantil . '</td>' .
'</tr>' .
'<tr>' .
'<td colspan="1" style="text-align:center;"><b> QTD Total: </b></td>' .
'<td colspan="2" style="text-align:center;"><b>' . $qntProdutoInfantil . '</b></td>' .
'<td colspan="2" ></td>' .
'<td colspan="2" style="text-align:center;"><b>R$ ' . $totalProdutoInfantil . '</b></td>' .
'</tr>' .
'<tr>' .
'<td colspan="7" style="height:0.5cm;"> </td>' .
'</tr>';
}
}
for ($i = 0; $i < count($htmlProdutos); $i++) {
$html .= $htmlProdutos[$i];
}
for ($i = 0; $i < count($htmlProdutosInfantis); $i++) {
$html .= $htmlProdutosInfantis[$i];
}
$html .="<tr>";
$html .="<td colspan='1'></td>";
$html .="<td colspan='2'style='text-align:center;'><b>$qntFinal</b></td>";
$html .="<td colspan='2' style='text-align:center;'><b>Valor:</b></td>";
$html .="<td colspan='2'style='text-align:center;'><b>R$ $finalProdutos</b></td>";
$html .="</tr>";
$html .="<tr>";
$html .="<td colspan='7' style='height:0.8cm;'> </td>";
$html .="</tr>";
$html .="<tr>";
$html .="<td colspan='7' style='text-align:center; font-size:16px;'><b>Frete por conta do cliente:</b></td>";
$html .="</tr>";
$html .="<tr>";
$html .="<td colspan='7' style='height:0.3cm;'> </td>";
$html .="</tr>";
$html .="<tr>";
$html .="<td colspan='1' style='text-align:center;'><b> Cotação: </b></td>";
$html .="<td colspan='2' style='text-align:center;'><b> Dias Uteis</b></td>";
$html .="<td colspan='4' style='text-align:center;'><b>Valor final do frete:</b></td>";
$html .="</tr>";
$html .="<tr>";
$html .="<td colspan='1' style='text-align:center;'>$cotacao</td>";
$html .="<td colspan='2' style='text-align:center;'>$diasUteis</td>";
$html .="<td colspan='4' style='text-align:center;'>R$ $valorFrete</td>";
$html .="</tr>";
$html .="<tr>";
$html .="<td colspan='7' style='height:0.5cm;'> </td>";
$html .="</tr>";
$html .="<tr>";
$html .="<td colspan='3' style='text-align:center;'><b>Valor total do Pedido:</b></td>";
$html .="<td colspan='4' style='text-align:center;'><b>R$ $finalPedido</b></td>";
$html .="</tr>";
$html .="<tr>";
$html .="<td colspan='7' style='height:0.8cm;'> </td>";
$html .="</tr>";
$html .="</table>";
$html .="<table border='1'>";
$html .= "<tr>";
$html .= "<td colspan='7' style='text-align:center; font-size:16px;'><b>Formas de Pagamento</b></td>";
$html .= "</tr>";
$html .="</table>";
$html .="<table>";
$html .= "<tr>";
$html .= "<td colspan='7' style='text-align:center;'><b></b></td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td colspan='7' style='text-align:center; '><b></b></td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td colspan='7' style='text-align:center; '><b></b></td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td colspan='7' style='text-align:center; '><b></b></td>";
$html .= "</tr>";
$html .="</table>";
$html .="<table border='1'>";
$html .= "<tr>";
$html .= "<td colspan='7' style='text-align:left; font-size:14px;'><b>Dados para Depósito: Banco do Brasil AG 3674-9 CC 13463-5</b></td>";
$html .= "</tr>";
$html .= "<tr>";
$html .= "<td colspan='7' style='text-align:left; font-size:14px;'><b>For Fun Confecção e Comercio de Vestuário Ltda - CNPJ 08.768.831/0001-10</b></td>";
$html .= "</tr>";
$html .="</table>";
// Configurações header para forçar o download
$arquivo = "../arquivos/Pedido-$cpf-$data.xls";
if (file_exists($arquivo)) {
file_put_contents("../arquivos/Pedido-$cpf-$data-$hora.xls", $html);
$download = "https://www.camisetasdecorrida.com.br/painel/arquivos/Pedido-$cpf-$data-$hora.xls";
} else {
file_put_contents("../arquivos/Pedido-$cpf-$data.xls", $html);
$download = "https://www.camisetasdecorrida.com.br/painel/arquivos/Pedido-$cpf-$data.xls";
}
// Inicia a classe PHPMailer
$mail = new PHPMailer(true);
// Define os dados do servidor e tipo de conexão
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->IsSMTP(); // Define que a mensagem será SMTP
try {
$mail->Host = 'smtp.camisetasdecorrida.com.br'; // Endereço do servidor SMTP (Autenticação, utilize o host smtp.seudomínio.com.br)
$mail->SMTPAuth = true; // Usar autenticação SMTP (obrigatório para smtp.seudomínio.com.br)
$mail->Port = 587; // Usar 587 porta SMTP
$mail->Username = '[email protected]'; // Usuário do servidor SMTP (endereço de email)
$mail->Password = 'c1a2m3i4s5e6'; // Senha do servidor SMTP (senha do email usado)
//Define o remetente
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
$mail->SetFrom('[email protected]', "Grade do(a) $nome"); //Seu e-mail
$mail->AddReplyTo("$email", "Grade do(a) $nome"); //Seu e-mail
$mail->Subject = 'Grade de pedido';//Assunto do e-mail
$emailDestino = "";
if(in_array(strtoupper($_POST["estado"]),$usuario_rodrigo)){
$emailDestino = "[email protected]";
}
elseif(in_array(strtoupper($_POST["estado"]),$usuario_cintia)){
$emailDestino = "[email protected]";
}
elseif(in_array(strtoupper($_POST["estado"]),$usuario_forfun)){
$emailDestino = "[email protected]";
}
else{
$emailDestino = "[email protected]";
};
$mail->AddAddress($emailDestino);
$mail->MsgHTML("
<strong>Grade de pedido do cliente:</strong> $nome <br />
<strong>Email para Confirmacao:</strong> $email <br />
<b>IP:</b> $_SERVER[REMOTE_ADDR] <br /><br />
<b>Link de download do excel:</b> $download <br /><br />
");
// Envia o conteúdo do arquivo
$mail->Send();
echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=https://www.camisetasdecorrida.com.br/confirmacao_pedido.php'>";//Mensagem de erro costumizada do PHPMailer
//caso apresente algum erro é apresentado abaixo com essa exceção.
}catch (phpmailerException $e) {
echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=https://www.camisetasdecorrida.com.br/erro_pedido.php'>";//Mensagem de erro costumizada do PHPMailer
}
function removeAcentos($string, $slug = false) {
$string = strtolower($string);
// Código ASCII das vogais
$ascii['a'] = range(224, 230);
$ascii['e'] = range(232, 235);
$ascii['i'] = range(236, 239);
$ascii['o'] = array_merge(range(242, 246), array(240, 248));
$ascii['u'] = range(249, 252);
// Código ASCII dos outros caracteres
$ascii['b'] = array(223);
$ascii['c'] = array(231);
$ascii['d'] = array(208);
$ascii['n'] = array(241);
$ascii['y'] = array(253, 255);
foreach ($ascii as $key=>$item) {
$acentos = '';
foreach ($item AS $codigo) $acentos .= chr($codigo);
$troca[$key] = '/['.$acentos.']/i';
}
$string = preg_replace(array_values($troca), array_keys($troca), $string);
// Slug?
if ($slug) {
// Troca tudo que não for letra ou número por um caractere ($slug)
$string = preg_replace('/[^a-z0-9.]/i', $slug, $string);
// Tira os caracteres ($slug) repetidos
$string = preg_replace('/' . $slug . '{2,}/i', $slug, $string);
$string = trim($string, $slug);
}
return $string;
}
?>
</body>
</html>
The problem is usually solved if the file is . xlsx but simply changing the extension in the code is no use, you need to see how the excel blioteca you use to generate in . xlsx, plus, can give an "ok" to open the file after the message.
– Diéfani Favareto Piovezan
The problem is that if I send this same file by email corrupts, the code would be just that, is there anything that would solve?
– user99476