Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Problema na exportação de CSV Caros, estou exportando um relatório pra csv, porém estou tendo problemas o arquivo fica todo desorganizado, os dados pulam pra próxima linha antes de chegar na ultima coluna. Segue o código abaixo e o arquivo csv em anexo Alguém já possou por isso ? function onExportCSV() { $this->onSearch(); try { TTransaction::open('easycontact'); ...
UP
Problema na exportação de CSV  
Fechado
Caros, estou exportando um relatório pra csv, porém estou tendo problemas o arquivo fica todo desorganizado, os dados pulam pra próxima linha antes de chegar na ultima coluna.

Segue o código abaixo e o arquivo csv em anexo

Alguém já possou por isso ?

function onExportCSV()
{
$this->onSearch();

try
{
TTransaction::open('easycontact');

$repository = new TRepository('Contact');

$criteria = new TCriteria;
$content = '';
$contacts = $repository->load($criteria);

if ($contacts)
{
$header .= 'ID;'.
'Paciente;'.
'Telefone1;'.
'Telefone2;'.
'Telefone3;'.
'Telefone4;'.
'Tipo;'.
'Status;'.
'Tentativas;'.
'Disposition;'.
'Agendamento;'.
'Carga \n';


foreach ($contacts as $contact)
{
$content .= $contact->id.';'.
$contact->nome_paciente.';'.
$contact->telefone1.';'.
$contact->telefone2.';'.
$contact->telefone3.';'.
$contact->telefone4.';'.
$contact->tipo.';'.
$contact->status.';'.
$contact->retry.';'.
$contact->disposition.';'.
$contact->data_agendamento.';'.
$contact->data_carga."\n";

if ($i < 1) $content = $header;
$i++;
}
file_put_contents('app/output/contacts.csv', $content);
TPage::openFile('app/output/contacts.csv');
}
TTransaction::close();
}
catch (Exception $e)
{
new TMessage('error', 'Error ' . $e->getMessage());
TTransaction::rollback();
}

}



Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (6)


FC

O CSV nada mais é que arquivo separado por ; verifique se no meio de sua string não tem nenhum ; uma forma é usar o strreplace para excluir os ; das strings.

Sds
Felipe Cortez
UP

Valeu Felipe, eu não tinha pensado nisso, vou verificar.

Abração
PD

Tem uma quebra de linha, no final do header em que o n está entre aspas simples, veja 'n'. Use duplas.

Att,
PD

O símbolo de contrabarra não pegou no meu post, mas imagine que ele está ali :-) \n
UP

Certo, Pablo obrigado pela atenção.

Vou fazer a alteração. A questão de ser uma tabela gigante não tem nada a ver não né ? Meu hardware é muito bom, tem processador 8 núcleos com 16 gigas de ram.

O que me deixa entrigado é que quando limito a 10.000 registros funciona, com o código da desta forma.

Abração.
PD

Tente editar o arquivo direto no sistema de arquivos para ver quantas linhas estão sendo geradas.
O PHP tem limite de memória no php.ini (memory_limit). O file_put_contents() pode
estar sofrendo com isso por ter de gravar uma string gigante de uma vez só.
Tente usar fopen(), fwrite() para escrever no arquivo aos poucos:
php.net/fwrite

Abraço,