繁体   English   中英

如何在 PHP 中正确格式化 CSV 文件以导入 Excel?

[英]How can I properly format a CSV file in PHP for an import into Excel?

我正在尝试从生成 CSV 文件的 PHP 导出数据。 但是,当我将其导入 Excel 时,它看起来像这样:

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

这是我的 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 = '';
     }
   }
?>

首先,您需要了解 CSV 文件的工作原理。 CHS 文件只是一个文本文件,每行都有逗号分隔值。 当您尝试将 CSV 文件导入 Excel/电子表格时。 他们将每一行读取为一行,并将每个逗号分隔的值排列到每行的列中。 现在您在代码中所做的是,以错误的方式将数组传递给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]
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM