从多个csv中读取特定的行和行并导出到一个csv文件

时间:2014-01-24 13:57:41

标签: php vba 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

我希望Stackoverflow的人能够知道如何做到这一点。

BR 克里斯蒂安

1 个答案:

答案 0 :(得分: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...