2015-04-29 5 views
2

Я написал следующий класс для экспорта результатов базы данных в файл CSV.PHP Экспорт в CSV-класс

<?php 
class Export { 
    public static function tocsv($results = array(), $fields = array()) { 
     $schema_insert = '"'.implode('","', $fields).'"'; 
     $out .= $schema_insert."\n"; 

     foreach($results as $row) { 
      $schema_insert = ''; 
      $schema_insert .= '"'.$row->week_ending.'",'; 
      $schema_insert .= '"'.$row->project.'",'; 
      $schema_insert .= '"'.$row->employee.'",'; 
      $schema_insert .= '"'.$row->plots.'",'; 
      $schema_insert .= '"'.$row->categories.'"'; 
      $out .= $schema_insert."\n"; 
     } 
     header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
     header("Content-Length: " . strlen($out)); 
     header("Content-type: text/csv"); 
     header("Content-Disposition: attachment; filename=$filename"); 
     echo $out; 
     exit; 
    } 
} 
?> 

Выход:

"Week ending","Project name","Plot numbers","Categories","Employee" 
"Friday 08 May 2015","Big Road","Tracey Smith","1A, 2A, 3A"," Water meter, 1st fix inc lagging" 

Однако, когда я открываю с Excel все в одном столбце. Я что-то пропустил?

Спасибо.

+0

попробуйте использовать \ n \ r вместо \ n – Nidhoegger

+0

Спасибо, уже пробовал этот, но такой же результат. – V4n1ll4

+0

Почему бы не просто использовать fputcsv? также где вы определяете $ filename? – Augwa

ответ

1

Используйте точку с запятой как ваш полевой ключ, а не запятую, это вещь Excel, а не вещь php.