Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas ao exportar para excel


Manoel Vitor Alegre Silva

Pergunta

Bom dia Pessoal. Estou com problema ao exportar minha pagina php para o excel. Os dados saem desconfigurados mesmo configurando para UTF8.

segue meu códigos abaixo.

o arquivo que exibe os dados 

<?php
require_once('db.php');
$slq = "SELECT * FROM tbl_itens_smo INNER JOIN tbl_itens ON(tbl_itens_smo.id_produto = tbl_itens.id) WHERE cp = 0 ORDER BY cp ASC";
$stmt = mysqli_query($conn, $slq);
$data = [];
$i = 0;
while($row = mysqli_fetch_assoc($stmt)){
    $data[$i]['ticket'] = $row['ticket'];
    $data[$i]['item'] = $row['item'];
    $data[$i]['comprar'] = $row['quantidade']-$row['cd_qnt'];
    $data[$i]['unidade'] = $row['unidade'];
    $data[$i]['grupo'] = $row['grupo'];
    $i++;
}
require_once('Export.php');
$export = new Export();

if(isset($_GET['export']) && $_GET['export'] == 'excel'){
    $export->excel('Itens para Compra', $_GET['fileName'], $data);
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Suprimentos</title>
        <!-- Compiled and minified CSS -->
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
   <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
   <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
    </head>
    <body>

    <div class="container">
        <div class="row">
            <h3>Itens a serem comprados </h3>
        </div>
        <div class="row">
            <p><a href="?export=excel&&fileName=Relatorio">
            <buttom class="btn btn-success">Exportar</buttom>
            </a></p>
            <p></p>
       
        </div>
        <div class="row">
            <table class="table">
                <thead>
                    <tr>
                        <th>Ticket</th>
                        <th>Produto</th>
                        <th>Quantidade</th>
                        <th>Unidade</th>
                        <th>Grupo</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach($data as $row): ?>
                        <tr>
                            <td><?php echo $row['ticket'];  ?></td>
                            <td><?php echo $row['item'];  ?></td>
                            <td><?php echo $row['comprar'];  ?></td>
                            <td><?php echo $row['unidade'];  ?></td>
                            <td><?php echo $row['grupo'];  ?></td>
                            
                        </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </div>

   
    </body>
</html>

e este é o arquivo que exporta para o excel.

<?php

class Export{

    public function excel($name, $fileName, $data){
        // nome do arquivo
        $fileName = $fileName . '.xls';
        // Abrindo tag tabela e criando título da tabela
        $html = '';
        $html .= '<table border="1">';
        $html .= '<tr>';
        $html .= '<th colspan="' . count($data) . '">' . $name . '</th>';
        $html .= '</tr>';
        // criando cabeçalho
        $html .= '<tr>';
        foreach ($data[0] as $k => $v){
            $html .= '<th>' . ucfirst($k) . '</th>';
        }
        $html .= '</tr>';
        // criando o conteúdo da tabela
        for($i=0; $i < count($data); $i++){
            $html .= '<tr>';
            foreach ($data[$i] as $k => $v){
                $html .= '<td>' . $v . '</td>';
            }
            $html .= '</tr>';
        }
        $html .= '</table>';

        // configurando header para download
        header("Content-Description: PHP Generated Data");
        header("Content-Type: application/x-msexcel");
        header("Content-Disposition: attachment; filename=\"{$fileName}\"");
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Pragma: no-cache");
        // envio conteúdo
        echo $html;
        exit;
    }

    public function xml($data){

    }
}
?>

Veja como exporta.

exemplo de como sai os dados com acentos -> 

FERRO REDONDO MECÂNICO 1/2"

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...