我每周从四个外部来源收到四个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 克里斯蒂安
答案 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...