Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
opa galera to com o seguinte problema to exportando os dados da tabela do banco de dados para um arquivo .csv porem ele ta comendo os 0 dos cnpj e do cpf....
queria saber se alguem sabe como resolver isso?
code segue abaixo. Só é do CNPJ ele tira o primeiro número 0.
<?php
$conexao = mysql_connect("localhost", "root", "");
$conecta = mysql_select_db("bd",$conexao);
/*****************************
TIRAR MASCARAS
*****************************/
function tiraMask($mask){
$mask = preg_replace("/\D+/", "", $mask);
return $mask;
}
$query = "SELECT * FROM exporta WHERE Exportado IS NULL";
$sql = mysql_query($query) or die(mysql_error());
//$file = "CPF do Vendedor;Data;Hora;CNPJ do Cliente;Nome do Cliente;CEP;Rua;Numero;Complemento;Bairro;Cidade;Estado;Contato;Observação;Telefone;Visita Agendada";
$file = "";$file .="\n".tiraMask($row['CPF_Vendedor']).';'.$row['Data'].';'.$row['Hora'].';'.tiraMask($row['CNPJ_Cliente']).';'.$row['Nome_Cliente'].';'.tiraMask($row['CEP']).';'.$row['Rua'].';'.$row['Numero'].';'.$row['Complemento'].';'.$row['Bairro'].';'.$row['Cidade'].';'.$row['Estado'].';'.$row['Contato'].';'.$row['OBS'].';'.tiraMask($row['Telefone']).';'.$row['Visita_Agendada'];
}
header('Content-Disposition: attachment; filename="arquivo.csv"');
header('Expires: 0');
header('Pragma: no-cache');
echo trim($file);
?>Veja se a função [inline]tiraMask[/inline] não está convertendo o valor para um numeral. Não existem números com zeros à esquerda, por isso estão sendo removidos.
Está excluindo ou excel não está mostrando? Abra o arquivo direto no bloco de notas e veja, pois isto já ocorreu comigo.
Evandro Oliveira fiz com outra função e também não deu certo...
ESerra copiei no bloco de notas e ficou sem o número 0 também...
Deve ter alguma forma de como fazer isso neh eu creio?
Esta ER que você está usando remove tudo da string menos os números, ela não pode estar causando este erro, em vez de gerar o csv dê um echo na saída para o próprio navegador. Como eu dissse, abra o arquivo direto no bloco de notas, sem passar pelo excel.
Fiz direto no navegador e ficou com os números do CNPJ tudo certo. Exportei também em um bloco de notas e ficou o número 0 tudo certo. Mas precisa ser em csv, pois eles só recebem a informação via este formato :/ que bronca eu arrumei hein ¬¬
Para exibir corretamenteo no Excel, você precisa envolver os valores entre "aspas".
como assim "99999999999999" ou como? Mais dai daria erro se fosse dessa maneira
nome,cpf
"fulano","066.345.225-22"
ou
nome,cpf
"fulano","06634522522"
Não daria erro não, funciona!
A última alternativa, se precisar mesmo trabalhar com Excel, é tentar gerar um XLS.
Evandro Oliveira tentei da sua maneira mais não deu certo. Fiz da seguinte maneira
<?php
/*****************************
TIRAR MASCARAS
*****************************/
function tiraMask($mask){
$mask = preg_replace("/\D+/", "", $mask);
return $mask;
}
$cpf = '007.765.123-10';
$cpf = tiraMask($cpf);
$file .="\n"."$cpf";
header('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />');
header('Content-Disposition: attachment; filename="exporta.csv"');
header('Expires: 0');
header('Pragma: no-cache');
echo trim($file);
?>
Ele voltou 776512310 isso
<?php
/*****************************
TIRAR MASCARAS
*****************************/
function tiraMask($mask){
return preg_replace("/\D/", "", $mask);
}
$cpf = tiraMask('007.765.123-10');
$file .= "\n"."\"$cpf\"";
header('Content-Type: text/csv;charset=utf-8');
header('Content-Disposition: attachment; filename="exporta.csv"');
header('Expires: 0');
header('Pragma: no-cache');
echo trim($file);pra mim volto sem os "00", qual a versão do teu excel?
No bloco de notas abre bonitinho?? Não tenho Excel aqui. Uso LibreOffice Calc. Na hora de abrir um CSV ele oferece opções que estão disponíveis no Excel quando você tenta importar um arquivo, e não abrir diretamente.
tentei já no bloco de notas e volto sem os "00"...
http://codepad.viper-7.com/YZi0oJ
Novamente, insisto para que exiba num editor de textos. Aqui funcionou corretamente.
Como disse, quando abro no Calc, o "Excel" do LibreOffice, aparece uma tela na frente perguntando o tipo do campo (número, texto, etc) com os zeros
/applications/core/interface/imageproxy/imageproxy.php?img=http://files.myopera.com/EvandroOliveira/albums/11602162/2013-03-17-002150_844x675_scrot.png&key=97e87268ac6a35cdc481618386f0e6f17ffa53d37225ff27186945ffdb84059d" alt="2013-03-17-002150_844x675_scrot.png" />
Deixei assim e deu certo também olhando no notepad++
$file .="\n".tiraMask($row['CPF_Vendedor']).';'.$row['Data'].';'.$row['Hora'].';'.$row['CNPJ_Cliente'].';'.$row['Nome_Cliente'].';'.tiraMask($row['CEP']).';'.$row['Rua'].';'.$row['Numero'].';'.$row['Complemento'].';'.$row['Bairro'].';'.$row['Cidade'].';'.$row['Estado'].';'.$row['Contato'].';'.utf8_encode($row['OBS']).';'.tiraMask($row['Telefone']).';'.sim;
Mais valeu ai pela ajuda Evandro Oliveira ;)
Sem código fica difícil a galera ajudar.