2012-07-09 26 views
27

Bir sunucuda kayıtlı bir CSV varsa, verilen bir satır yazmak için PHP'yi nasıl kullanabilirim, derken 142,fred,elephants deyin?Bir CSV dosyasına yeni bir satır ekleme

+1

* ekleme * Eğer bir dosyayı açtığınızda orada, modu bakınız genellikle dosya sistemi işlevlerine eklemek için açıktır. – hakre

cevap

68

Açık ekleme CSV dosyası (fopen­Docs):

fputcsv($handle, $line); # $line is an array of string values here 

Sonra (fclose­Docs) kolu kapatın:

fclose($handle); 

$handle = fopen("test.csv", "a"); 

Sonra hattını (fputcsv­Docs) ekleyin

Umarım bu yardımcı olur.

+3

@fvu: Gerçekten değil. '+' Gerekli değildir, '' varsa, dosyayı tek başına da oluşturur. '+' Desteği okumak içindir. Bkz. * "'A' \t Sadece yazmak için açın; dosya işaretçisini dosyanın sonuna yerleştirin. Dosya yoksa, oluşturmayı deneyin." * Http://de.php.net/manual/en /function.fopen.php – hakre

+4

@Dale: Bu şekilde demek istemedim. Kolayca çok yanlış okunamayan daha önemsiz bir son cümle ekledi. Buradaki hissizlere zarar vermemek. – hakre

+0

Eğer '$ line' ifadesinin, gerçek satırın kendisinden ziyade bir dizi dizi olması gerektiğine katılırsanız yardımcı olurum. – Overcode

0

özgün başlıklarını korumak için her bölünmüş dosyayı isterseniz;

$inputFile = './users.csv'; // the source file to split 
$outputFile = 'users_split'; // this will be appended with a number and .csv e.g. users_split1.csv 

$splitSize = 10; // how many rows per split file you want 

$in = fopen($inputFile, 'r'); 
$headers = fgets($in); // get the headers of the original file for insert into split files 
// No need to touch below this line.. 
    $rowCount = 0; 
    $fileCount = 1; 
    while (!feof($in)) { 
     if (($rowCount % $splitSize) == 0) { 
      if ($rowCount > 0) { 
       fclose($out); 
      } 
      $out = fopen($outputFile . $fileCount++ . '.csv', 'w'); 
      fputcsv($out, explode(',', $headers)); 
     } 
     $data = fgetcsv($in); 
     if ($data) 
      fputcsv($out, $data); 
     $rowCount++; 
    } 

    fclose($out); 
0

Bu çözüm benim için çalışıyor: Bu hakre cevabı modifiye versiyonu

<?php 
$list = array 
(
"Peter,Griffin,Oslo,Norway", 
"Glenn,Quagmire,Oslo,Norway", 
); 

$file = fopen("contacts.csv","w"); 

foreach ($list as $line) 
    { 
    fputcsv($file,explode(',',$line)); 
    } 

fclose($file); 
?> 

Ref: https://www.w3schools.com/php/func_filesystem_fputcsv.asp denir

İlgili konular