Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eronventer

Quebrar linha ao exportar em CSV

Recommended Posts

Pessoal.

 

Nos registros exportados que estou gerando, uma das colunas gostaria que recebesse o valor separado por quebra de linha.

 

Eu tentei usar \n, \r, \r\n mas ele acaba quebrando a linha fora da célula....queria ver se realmente é possível... como da forma em anexo.

 

166nl21.png

Compartilhar este post


Link para o post
Compartilhar em outros sites


$linhas = array();

$campos = array("Nome", "E-mail", "Telefone(s)");

 

foreach ($campos as $campo)

{

array_push($linhas, $campo);

}

 

$export = "";

$export .= join(';', $linhas)."\r\n";

 

foreach ($lista as $cadastro)

{

$fones = explode('#', $cadastro['fones']);

$export .= $cadastro['nome'].';'.

$cadastro['email'].';'.

implode("\n", $fones).

"\r\n";

}

 

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: text/comma-separated-values");

header("Content-Disposition: attachment; filename=cadastros.csv");

 

echo $export;

exit();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quero quebrar linhas dentro de uma célula, como na imagem do primeiro post.

Seria o campo telefone. No banco gravo ele separado por #.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em geral o Excel vai interpretar como quebra de linha, dentro de uma mesma célula, dados entre aspas duplas. Ou seja, para colocar os telefones dentro da mesma linha você precisaria ter um .CSV assim:

 

nome; email; telefones;
fulano; fulano@teste.com;"0000-0000
1111-1111
2222-2222";
cicrano;cicrano@teste.com;"4444-4444
3333-3333
5555-5555";
Cuidado com os espaços entre os ponto e vírgulas.
Acho que para funcionar no seu código bastaria fazer algo como:
foreach ($lista as $cadastro)
{
    $fones = explode('#', $cadastro['fones']);
    $export .=  $cadastro['nome'].';'.
	        $cadastro['email'].';\"'.
	        implode("\n", $fones).
		"\r\n\"";	
}

Veja se ajuda.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu, ajudou mesmo, só teve uma modificação, ficando assim:

foreach ($lista as $cadastro)
{
    $fones = explode('#', $cadastro['fones']);
    $export .=  $cadastro['nome'].';'.
	        $cadastro['email'].';"'.
	        implode("\r\n", $fones).
		"\r\n\"";	
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que ótimo que ajudou Eron!

 

Poderia ser assim também:

foreach ($lista as $cadastro)
{
    $fones = explode('#', $cadastro['fones']);
    $export .=  $cadastro['nome'].";".
	        $cadastro['email'].";\"".
	        implode("\r\n", $fones).
		"\r\n\"";	
}

Aspas simples e duplas sempre são traiçoeiras :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.