简体   繁体   English

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

[英]Read specifc rows and lines from multiple csv and export to one csv file

I receive weekly four csv files from four external sources. 我每周从四个外部来源收到四个csv文件。 The csv files have the same design but contain different data. csv文件具有相同的设计,但包含不同的数据。 I would like to have specific rows and lines from all four files collected into one csv file. 我想将来自所有四个文件的特定行和行收集到一个csv文件中。

Below is an example of how all four csv files is designed. 下面是所有四个csv文件的设计示例。 I want to read Date, Name and Row5 and Row6 from all four csv files and then all this should be added into one csv file and set up as the 2nd example. 我想从所有四个csv文件中读取日期,名称以及Row5和Row6,然后将所有这些内容添加到一个csv文件中并设置为第二个示例。

How could this be done? 怎么办呢? Within MS Excel as a script or maybe serverside using PHP? 在MS Excel中作为脚本还是在服务器端使用PHP? I have been looking into a solution PHP. 我一直在寻找解决方案的PHP。 But i am not sure if it's even possible using PHP? 但是我不确定是否可以使用PHP?

The delimiters used in the content (row1,row2,row3 etc.) is a comma (,). 内容(row1,row2,row3等)中使用的定界符是逗号(,)。 The top with date and name only uses a colon (:) 日期和名称的顶部仅使用冒号(:)

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

2nd example 第二个例子

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

I hope someone here at Stackoverflow have an idea of how this could be done. 我希望Stackoverflow的某人对此有一个想法。

BR Kristian 克里斯蒂安(BR Kristian)

$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>";
            }

        }
    }

i made this code with 4 csv file, with this information: 我用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

and the result is something like you want: 结果是您想要的东西:

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...

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

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