Thyago Brasil 0 Denunciar post Postado Novembro 8, 2016 Pessoal, bom dia!Estou fazendo a exportação de uma consulta para XLS.O meu problema está sendo que ao exportar para o XLS, tenho um campo valor que está importando de forma incorreta. Pelo que percebi, valores maiores de 1000 ou que contenham os centavos (por ex: 855,14) Estão exportando corretos. Porém numeros cheios (por ex: 800) vai no fim como 800 mesmo.Abaixo, o código de como estou fazendo:HTML montado: $html = ''; $html .= '<table '.$style_table.'>'; $html .= ' <tr>'; $html .= ' <td><b><center>Admissão</center></b></td>'; $html .= ' <td><b><center>Nome</center></b></td>'; $html .= ' <td><b><center>Cargo</center></b></td>'; $html .= ' <td width="30%"><b><center>Salário</center></b></td>'; $html .= ' </tr>'; $html .= ' <tr>'; $html .= ' <td>01/12/2013</td>'; $html .= ' <td>JOAO DA SILVA</td>'; $html .= ' <td>SUPERVISOR(A) ATC</td>'; $html .= ' <td>1.165,00</td>'; $html .= ' </tr>'; $html .= ' <tr>'; $html .= ' <td>01/10/2010</td>'; $html .= ' <td>MARIA DO BAIRRO</td>'; $html .= ' <td>FERRAMENTEIRO</td>'; $html .= ' <td>852,00</td>'; $html .= ' </tr>'; $html .= ' <tr>'; $html .= ' <td>01/05/2015</td>'; $html .= ' <td>KARINA DE SOUZA</td>'; $html .= ' <td>AUX. ADMINISTRATIVO</td>'; $html .= ' <td>855,49</td>'; $html .= ' </tr>'; $html .= '</table>'; return $html; Função para geração do XLS: function geraXls($arquivo, $html){ // Configurações header para forçar o download header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT"); header ("Cache-Control: no-cache, must-revalidate"); header ("Pragma: no-cache"); header ("Content-type: application/x-msexcel"); header ("Content-Disposition: attachment; filename=\"$arquivo\"" ); header ("Content-Description: PHP Generated Data" ); // Envia o conteúdo do arquivo } No exemplo: - 1.165,00 vai exportar para o excel certo; - 852,00 não exporta correto, ou seja, exporta 852; - 855,49, exporta correto também.Alguém teria alguma ideia do que possa ser?Para formatar já fiz essas duas formas mas não deram certo: $salario = sprintf('%.2f', '852,00'); // ESTE TRANSFORMA O CAMPO EM STRING E NA HORA DE FAZER ALGUMA FORMULA NO EXCEL NÃO FUNCIONA $salario = number_format('852,00', 2, ',', '.'); // ESTE FAZ O QUE FALEI NO EXEMPLO ACIMA. Desde já, agradeço a ajuda de todos. Compartilhar este post Link para o post Compartilhar em outros sites
LaerteDias 17 Denunciar post Postado Novembro 8, 2016 header ("Content-Disposition: attachment; filename=\"$arquivo\"" ) Vê se essa variavel $arquivo tá sendo chamada, coloque entre aspas simples Compartilhar este post Link para o post Compartilhar em outros sites
Thyago Brasil 0 Denunciar post Postado Novembro 8, 2016 Bom dia Laerte. Sim, está sendo chamada. Coloquei aspas simples como você sugeriu porém continuou na mesma. Compartilhar este post Link para o post Compartilhar em outros sites
LaerteDias 17 Denunciar post Postado Novembro 8, 2016 header ("Content-Disposition: attachment; filename=\"{$arquivo}\"" ); muda para o acima Compartilhar este post Link para o post Compartilhar em outros sites
Thyago Brasil 0 Denunciar post Postado Novembro 8, 2016 Mudei mas não deu certo. Compartilhar este post Link para o post Compartilhar em outros sites
LaerteDias 17 Denunciar post Postado Novembro 8, 2016 Tenta fazer sem auxilio de função veja um exemplo no site abaixo:http://blog.thiagobelem.net/criando-e-exportando-planilhas-do-excel-com-php Compartilhar este post Link para o post Compartilhar em outros sites
Thyago Brasil 0 Denunciar post Postado Novembro 8, 2016 Mesma coisa... Compartilhar este post Link para o post Compartilhar em outros sites
LaerteDias 17 Denunciar post Postado Novembro 8, 2016 posta o código na última alteração Compartilhar este post Link para o post Compartilhar em outros sites
Thyago Brasil 0 Denunciar post Postado Novembro 8, 2016 HTML montado:$html = '';$html .= '<table '.$style_table.'>';$html .= ' <tr>';$html .= ' <td><b><center>Admissão</center></b></td>';$html .= ' <td><b><center>Nome</center></b></td>';$html .= ' <td><b><center>Cargo</center></b></td>';$html .= ' <td width="30%"><b><center>Salário</center></b></td>';$html .= ' </tr>';$html .= ' <tr>';$html .= ' <td>01/12/2013</td>';$html .= ' <td>JOAO DA SILVA</td>';$html .= ' <td>SUPERVISOR(A) ATC</td>';$html .= ' <td>1.165,00</td>';$html .= ' </tr>';$html .= ' <tr>';$html .= ' <td>01/10/2010</td>';$html .= ' <td>MARIA DO BAIRRO</td>';$html .= ' <td>FERRAMENTEIRO</td>';$html .= ' <td>852,00</td>';$html .= ' </tr>';$html .= ' <tr>';$html .= ' <td>01/05/2015</td>';$html .= ' <td>KARINA DE SOUZA</td>';$html .= ' <td>AUX. ADMINISTRATIVO</td>';$html .= ' <td>855,49</td>';$html .= ' </tr>';$html .= '</table>'; // Configurações header para forçar o downloadheader ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");header ("Cache-Control: no-cache, must-revalidate");header ("Pragma: no-cache");header ("Content-type: application/x-msexcel");header ("Content-Disposition: attachment; filename=\"{$arquivo}\"" );header ("Content-Description: PHP Generated Data" ); echo $html;exit; Compartilhar este post Link para o post Compartilhar em outros sites
LaerteDias 17 Denunciar post Postado Novembro 8, 2016 cade a variavel $arquivo sendo setada Compartilhar este post Link para o post Compartilhar em outros sites
Thyago Brasil 0 Denunciar post Postado Novembro 8, 2016 desculpe, faltou colocar. Mas está correto no meu arquivo Compartilhar este post Link para o post Compartilhar em outros sites
Thyago Brasil 0 Denunciar post Postado Novembro 8, 2016 Apenas um detalhe. No codigo abaixo, se eu tiro o ponto, quando os valores são maiores que 1000, também não traz as decimais. Ex: $salario = number_format('1852,00', 2, ',', '.'); No codigo acima, o export traz correto no excel, ou seja, 1.852,00 $salario = number_format('1852,00', 2, ',', ''); Nesse exemplo, eu tirei o ponto, o que fica errado, ou seja, 1852 Compartilhar este post Link para o post Compartilhar em outros sites
Thyago Brasil 0 Denunciar post Postado Novembro 10, 2016 Bom dia. Alguma ideia pessoal? Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Luiz 41 Denunciar post Postado Novembro 10, 2016 $salario = number_format('1852,00', 2, ',', '.'); Muda para: $salario = number_format('1852', 2, ',', '.'); Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Novembro 10, 2016 Ja tentou usar o valor como float e ponto no lugar de virgula. Uma coisa é ir o valor como string, a outra é ir como float no excel Compartilhar este post Link para o post Compartilhar em outros sites
Thyago Brasil 0 Denunciar post Postado Novembro 10, 2016 Ja tentou usar o valor como float e ponto no lugar de virgula. Uma coisa é ir o valor como string, a outra é ir como float no excel Boa tarde Williams. Tentei como sugeriu, porém, não deu certo. Fiz isso: $salario = number_format('852,00', 2, '.', ''); Mas ele entende como string e não calcula. Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Novembro 10, 2016 Converta para decimal, number_format e só para formatar, não tem nada haver com cálculo. Compartilhar este post Link para o post Compartilhar em outros sites
Thyago Brasil 0 Denunciar post Postado Novembro 10, 2016 Converta para decimal, number_format e só para formatar, não tem nada haver com cálculo. Deu na mesma Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Novembro 10, 2016 vamos por parte, pega o valor que voce quer inserir neste momento e de um var_dump echo "<pre>"; var_dump($nome_da_variavel); echo "</pre>"; e coloca aqui o resultado Compartilhar este post Link para o post Compartilhar em outros sites
Thyago Brasil 0 Denunciar post Postado Novembro 10, 2016 Me retornou isso Williams: float(852) Compartilhar este post Link para o post Compartilhar em outros sites