2014-01-24 58 views
0

我每週從四個外部源接收四個csv文件。 csv文件具有相同的設計,但包含不同的數據。我想將所有四個文件中的特定行和行收集到一個CSV文件中。從多個csv讀取特定的行和行,並將其導出到一個csv文件

下面是一個如何設計所有四個CSV文件的例子。我想從所有四個csv文件中讀取Date,Name和Row5和Row6,然後將所有這些添加到一個csv文件中並設置爲第二個示例。

這怎麼辦?在MS Excel中作爲腳本或使用PHP的服務器端? 我一直在尋找解決方案PHP。但我不確定是否可以使用PHP?

內容中使用的分隔符(row1,row2,row3等)是逗號(,)。日期和名字的頂部只使用一個冒號(:)

Date: 24-01-2014        
Name: source1       



Row1 Row2 Row3 Row4 Row5 Row6 Row7 Row8 Row9 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 
ad4213 ad4214 ad4215 ad4216 ad4217 ad4218 ad4219 ad4220 ad4221 

第二個示例

Row5 Row6 Date Name 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source1 
ad4217 ad4218 24-01-2014 source2 
ad4218 ad4218 24-01-2014 source2 
ad4219 ad4218 24-01-2014 source2 
ad4220 ad4218 24-01-2014 source2 
ad4221 ad4218 24-01-2014 source2 
ad4222 ad4218 24-01-2014 source2 
ad4223 ad4218 24-01-2014 source2 
ad4224 ad4218 24-01-2014 source2 
ad4225 ad4218 24-01-2014 source2 
ad4226 ad4218 24-01-2014 source2 
ad4227 ad4218 24-01-2014 source2 
ad4228 ad4218 24-01-2014 source2 
ad4229 ad4218 24-01-2014 source2 
ad4230 ad4218 24-01-2014 source2 
ad4231 ad4218 24-01-2014 source2 
ad4232 ad4218 24-01-2014 source2 
ad4217 ad4218 24-01-2014 source3 
ad4218 ad4219 24-01-2014 source3 
ad4219 ad4220 24-01-2014 source3 
ad4220 ad4221 24-01-2014 source3 
ad4221 ad4222 24-01-2014 source3 
ad4222 ad4223 24-01-2014 source3 
ad4223 ad4224 24-01-2014 source3 
ad4224 ad4225 24-01-2014 source3 
ad4225 ad4226 24-01-2014 source3 
ad4226 ad4227 24-01-2014 source3 
ad4227 ad4228 24-01-2014 source3 
ad4228 ad4229 24-01-2014 source3 
ad4229 ad4230 24-01-2014 source3 
ad4230 ad4231 24-01-2014 source3 
ad4231 ad4232 24-01-2014 source3 
ad4232 ad4233 24-01-2014 source3 
ad4217 ad4218 24-01-2014 source4 
ad4218 ad4219 24-01-2014 source4 
ad4219 ad4220 24-01-2014 source4 
ad4220 ad4221 24-01-2014 source4 
ad4221 ad4222 24-01-2014 source4 
ad4222 ad4223 24-01-2014 source4 
ad4223 ad4224 24-01-2014 source4 
ad4224 ad4225 24-01-2014 source4 
ad4225 ad4226 24-01-2014 source4 
ad4226 ad4227 24-01-2014 source4 
ad4227 ad4228 24-01-2014 source4 
ad4228 ad4229 24-01-2014 source4 
ad4229 ad4230 24-01-2014 source4 
ad4230 ad4231 24-01-2014 source4 
ad4231 ad4232 24-01-2014 source4 
ad4232 ad4233 24-01-2014 source4 

我希望有人在這裏有#1怎麼可以這樣做的想法。

BR 克里斯蒂安

+0

是csv文件中的分隔符是逗號還是製表符?在你的例子中,它看起來像一個標籤,但你可以從Excel複製和粘貼。 – SyntaxLAMP

+0

對於缺少有關csv文件的詳細信息感到抱歉。分隔符在文件中使用: 'code' 日期:24-01-2014 名稱:test.csv ROW1,行2,ROW3,ROW4,ROW5,ROW6,ROW7,ROW8,Row9 ad4213,ad4214,ad4215,4216,ad4217,d4218,a219,ad4220,ad4221 '代碼' – Kwire

回答

0
$foo = array("source1.csv", "source2.csv","source3.csv","source4.csv"); 
    $cont=0; 
    foreach ($foo as $value) { 
     $fh = fopen($value, 'r'); 
     if(!$fh) die('File no good!'); 

     $i=0;$j=0; 
     while (!feof($fh)){ 
      $campo = fgetcsv($fh,4096,";"); 

      if($i < 2) 
       $dataandsource[$cont][$i]=$campo[1]; 
      elseif($campo[5] != '' && $campo[6]!= ''){ 
       $rowfive[$cont][$j]=$campo[4]; 
       $rowsix[$cont][$j]=$campo[5]; 
       $j++; 
      } 
      $i++; 
     } 
     unset($rowfive[$cont][0]); //first row is 'row5' 
     unset($rowsix[$cont][0]); //first row is 'row6' 
    $cont++; 
    } 
    for($x=0;$x< count($foo);$x++) 
    { 
     for($y=0;$y <= count($rowfive[$x]);$y++) 
     { 
      if($x==0 && $y ==0) 
       echo "row5 row6 Date Source<br>"; 
      else{ 
       if($rowfive[$x][$y] != '') 
       echo $rowfive[$x][$y].";".$rowsix[$x][$y].";".$dataandsource[$x][0].";".$dataandsource[$x][1]."<br>"; 
      } 

     } 
    } 

我做了這個代碼4 csv文件,與這樣的信息:

Date;24/01/2014;;;;;;; 
Name;source1;;;;;;; 



Row1; Row2; Row3;Row4; Row5;Row6;Row7;Row8;Row9 
ad4213;ad4214;ad4215;ad4216;ad4215;ad4218;ad4219;ad4220;ad4221 
ad4213;ad4214;ad4215;ad4216;ad4217;ad4218;ad4219;ad4220;ad4221 
ad4213;ad4214;ad4215;ad4216;ad4217;ad4218;ad4219;ad4220;ad4221 
ad4213;ad4214;ad4215;ad4216;ad4217;ad4218;ad4219;ad4220;ad4221 
ad4213;ad4214;ad4215;ad4216;ad4217;ad4218;ad4219;ad4220;ad4221 
ad4213;ad4214;ad4215;ad4216;ad4217;ad4218;ad4219;ad4220;ad4221 
ad4213;ad4214;ad4215;ad4216;ad4217;ad4218;ad4219;ad4220;ad4221 
ad4213;ad4214;ad4215;ad4216;ad4217;ad4218;ad4219;ad4220;ad4221 
ad4213;ad4214;ad4215;ad4216;ad4215;ad4218;test6;ad4220;ad4221 

,結果是一樣的東西,你想:

row5 row6 Date Source 
ad4215;ad4218;24/01/2014;source1 
ad4217;ad4218;24/01/2014;source1 
ad4217;ad4218;24/01/2014;source1 
ad4217;ad4218;24/01/2014;source1 
ad4217;ad4218;24/01/2014;source1 
ad4217;ad4218;24/01/2014;source1 
ad4217;ad4218;24/01/2014;source1 
ad4217;ad4218;24/01/2014;source1 
ad4215;ad4218;24/01/2014;source1 
ad4213;ad4221;24/01/2014;source2 
ad4213;ad4221;24/01/2014;source2 
ad4213;ad4221;24/01/2014;source2 
ad4213;ad4221;24/01/2014;source2 
ad4213;ad4221;24/01/2014;source2 
ad4213;ad4221;24/01/2014;source2 
ad4213;ad4221;24/01/2014;source2 
ad4213;ad4221;24/01/2014;source2 
ad4213;ad4221;24/01/2014;source2 
ad5555;test6i;24/01/2014;source3 
ad5555;test6i;24/01/2014;source3 
etc... 
+0

這幾乎是太棒了。我認爲這樣做的原因是前五行是文本或只是空格標題(行1,行2等)從第六行開始。對於缺少有關csv文件的詳細信息感到抱歉。 文件頂部 「 日期:24-01-2014 名稱:test.csv 」 內容 「 ROW1,行2,ROW3,ROW4,ROW5,ROW6分隔符在文件中使用,Row7,Row8,Row9 ad4213,ad4214,ad4215,4216,ad4217,d4218,a219,ad4220,ad4221 「 – Kwire

+0

」經過一些小的調整後,我使它工作,因此它可以讀取兩個分隔符。非常感謝您的工作! BR Kristian – Kwire

相關問題