Как правильно отформатировать файл CSV в PHP для импорта в Excel? - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь экспортировать данные из PHP, генерирующие файл CSV. Однако, когда я импортирую это в Excel, это выглядит так:

enter image description here

введите описание изображения здесь

введите описание изображения здесь

Это мой php код:

<?php  
   if($error == '')
   {
      $file_open = fopen("Sortering_formulier.csv", "a");
      $rows = count(file("Sortering_formulier.csv"));
      if($rows > 1)
      {
       $rows = ($rows - 1) + 1;
      }  
      $form_data = array(
       'sr_no' => $rows,
       'auditeurso'  => $auditeurso,
       'datum'  => $datum,
       'zone'  => $zone,
       'textso01'  => $textso01,
       'ok'  => $ok,
       'results' => $results,
       'okk'  => $okk,
       'okc'  => $okc,
       'comment' => $comment
      ); 
      fputcsv($file_open, $form_data);
      $error = '<label class="text-success">Thank you for filling in the Sorting form</label>';
      $auditeurso = '';
      $datum = '';
      $zone = '';
      $textso01 = '';
      $ok = '';
      $results = '';
      $okk = '';
      $okc = '';
      $comment = '';
     }
   }
?>

1 Ответ

0 голосов
/ 18 января 2019

Во-первых, вам нужно понять, как работает файл CSV. Файл CHS - это просто текстовый файл с разделенными запятыми значениями в каждой строке. При попытке импортировать файл CSV в Excel / Spreadsheet. Они читают каждую строку как одну строку и располагают значения, разделенные запятыми, в столбцы для каждой строки. Теперь то, что вы делаете в своем коде, это неверная передача массива методу putcsv(). Посмотрите на массив, который вы передаете,

$form_data = array(
       'sr_no' => $rows,
       'auditeurso'  => $auditeurso,
       'datum'  => $datum,
       'zone'  => $zone,
       'textso01'  => $textso01,
       'ok'  => $ok,
       'results' => $results,
       'okk'  => $okk,
       'okc'  => $okc,
       'comment' => $comment
      ); 

В своем коде вы передаете ассоциированный массив в функцию putcsv(), тогда как вам нужно передать многомерный массив в эту функцию. В массиве, который вы передаете, каждый элемент массива рассматривается как отдельное значение для каждого столбца, поэтому вы получаете некоторый беспорядочный текст в Excel. Вы можете попробовать передать массив в этом формате,

$form_data = array(
    ['sr_no', 'auditeurso', 'datum', 'zone', 'textso01', 'ok', 'results', 'okk', 'okc', 'comment'], /* this represent the column headers in the Excel*/
    [$rows, $auditeurso, $datum, $zone, $textso01, $ok, $results, $okk, $okc, $comment]
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...