2014-09-10 59 views
-4

我需要使用CSV文件中的数据生成仪表板。示例CSV文件将如下所示。从CSV数据生成仪表板

  1. 14年9月9日,詹姆斯; OK
  2. 14年9月19日,詹姆斯; NOK
  3. 14年9月29日,吉姆; NOK

的数据需要呈现的类似如下。

  1. 名; 2014年9月9日; 2014年9月19日; 2014年9月29日
  2. 詹姆斯; OK; NOK;
  3. 吉姆;;; NOK

能否请您提出来从源数据文件中的仪表盘的方法。

+0

你尝试过这么远吗? csv文件是否已经在服务器上,或者您是否还需要编写代码来处理文件上传? – Steve 2014-09-10 09:37:29

+1

是的,它可能在PHP中,你可以通过阅读文件fgetcsv开始 – bumperbox 2014-09-10 09:37:54

+0

我一时没有开始。首先,我想确定我正在以良好的方式工作。我没有完全用fgetcsv解决方案,因为循环可能会非常棘手的组织。我不需要完整的代码,因为方法。 CSV文件已经在服务器上。 – 2014-09-10 10:16:43

回答

0

这可以通过php数组来处理。以下是您的要求的完整工作代码。

<pre> 
<?php 

$filename = 'data.csv'; 
$contents = file($filename); 

$col[] = "Name"; 

foreach($contents as $line) { 
    $line = preg_replace("/\r|\n/", "", $line); 
    $line_array = explode(";",$line); 
    if(!in_array($line_array[0],$col)){ 
     $col[] = $line_array[0]; 
    } 
    $row[$line_array[1]][$line_array[0]]=$line_array[2]; 
} 

foreach($col as $val) 
{ 
    echo $val . ";"; 
} 

echo "\n"; 
unset($col[0]); 

foreach($row as $key=>$row_val) 
{ 
    echo $key . ";"; 
    foreach($col as $col_val) 
    { 
     if(!isset($row_val[$col_val])) 
     { 
      $row_val[$col_val] = ""; 
     } 
     echo $row_val[$col_val] . ";"; 
    } 
    echo "\n"; 
} 
?> 

和工作样本可以在这里看到:http://sugunan.net/demo/csv.php

+0

虽然这是在阅读文件,但我不确定这是OP所要求的“仪表板” - 说了这个问题在任何情况下都不适合SO。 – Fluffeh 2014-09-10 10:34:00

+0

这个问题不清楚他是否想要在网页或其他CSV上输出。如果他希望通过修改代码来完成表格或json。唯一的一点我在这里尝试采取明智的日期和状态的人采取列智者日期和行明智的人。 – sugunan 2014-09-10 10:55:52

+1

感谢上师,感谢你我接近尾声。它的工作,但我有这个错误信息:名称; 09.09.14; 19.09.14; 29.09.14; James; OK; NOK; 注意:Undefined index:29.09.14 in C:\ xampp \ htdocs \ Pointage \ Table2.php on line 31 ;吉姆; 注意:未定义索引:09.09.14在C:\ xampp \ htdocs \ Pointage \ Table2.php上线31 ; 注意:未定义的索引:19.09.14在C:\ xampp \ htdocs \ Pointage \ Table2.php上线31 ; NOK10.09.14;并且我不想禁用这种通知 – 2014-09-10 14:56:04