我需要从此csv文件制作2个表。我如何在第二行之后分割文件,
csv文件的外观如下。
我已将我需要的内容标记为标题。我不需要那些的数据 行。
Palle_nr; Varenummer; Ordre_nr; Operatoer; Maskin_nr
1234; 1234_2019_01_14_17_11_23; 1234; TN; 1234
;;;;
名称;基准;属性;条件;类型
1)身高130 ;; avg(L)Y ;; inspection_dimension_scalar
这就是我的代码的样子。再次,我要这段代码要做的是在第二行之后拆分csv文件。所以我用Palle_nr得到一张桌子 和带有名称的表
if (isset($_POST['btn-upload'])){
copy("$sourcepath/$latest_filename","$copy/$latest_filename");
$row = 1;
if (($openfile = fopen("$copy/$latest_filename", "r")) !== FALSE) {
$csvuser->createPalleTable($latest_filename);
while ($getpdata = fgetcsv($openfile, 1000, ";")) {
$getpdata = array_map("utf8_encode", $getpdata);
$totalp = count($getpdata);
$row++;
for ($i=0; $i < $totalp; $i++) {
$pdata = implode(";", $getpdata);
$palledata = explode(";", $pdata);
}
$csvuser->insertPalleTable($latest_filename,$palledata);
}
///////// This is where i want the file to split ///////
$header = fgetcsv($openfile, 1000, ";");
$header = array_map("utf8_encode", $header);
$totalheader = count($header);
for ($i=0; $i < $totalheader; $i++) {
$headerdata = implode(";", $header);
$th = explode(";", $headerdata);
}
$csvuser->createCsvTable($latest_filename);
while ($getdata = fgetcsv($openfile, 1000, ";")) {
$getdata = array_map("utf8_encode", $getdata);
$total = count($getdata);
$row++;
for ($c=0; $c < $total; $c++) {
$csvdata = implode(";", $getdata);
$fncsvdata = explode(";", $csvdata);
}
$csvuser->insertCsvTable($latest_filename,$fncsvdata);
}
}
}
如果您需要整个代码,则可以重新创建问题。然后将其上传,但以为是很多代码。
其他读取文件的方式也受到赞赏。我只需要能够分割文件即可。
答案 0 :(得分:1)
我需要在您的代码中提出很多问题,但是由于文件中的前四行是可预测的,因此无需循环就可以使用它们。
if (isset($_POST['btn-upload'])){
copy("$sourcepath/$latest_filename","$copy/$latest_filename");
if (($openfile = fopen("$copy/$latest_filename", "r")) !== false) {
$header1 = fgetcsv($openfile, 1000, ";"); // consume, but don't use
$csvuser->createPalleTable($latest_filename);
$csvuser->insertPalleTable($latest_filename, array_map("utf8_encode", fgetcsv($openfile, 1000, ";")));
$delimiting_row = fgetcsv($openfile, 1000, ";"); // consume, but don't use
$header2 = fgetcsv($openfile, 1000, ";"); // consume, but don't use
$csvuser->createCsvTable($latest_filename);
while ($getdata = fgetcsv($openfile, 1000, ";")) {
$csvuser->insertCsvTable($latest_filename, array_map("utf8_encode", $getdata));
}
}
}
这是完全未经测试的(并通过我的手机发布)。