PHP Kullanarak CSV Dosyası Oluşturma

PHP‘de, CSV uzantılı dosya oluşturabilmek için tanımlanmış fonksiyonlar vardır. PhpExcel gibi kütüphaneler yerine bu fonksiyonları kullanmanın bir kaç avantajı vardır. Daha az kaynak tüketir ve dolasıyla daha hızlıdır.

Öncelikle CSV dosyamızı oluşturacak fonksiyonumuzu oluşturalım.

function array_to_csv_function($array, $filename = "export.csv", $delimiter=";") {
 // Bir temp dosyası açmak yerine bellek alanı kullanıyoruz. 
 $f = fopen('php://memory', 'w');
 // Verilerimizin olduğu diziyi döngüye sokuyoruz
 foreach ($array as $line) {
 // Dizimizin içindeki her dizi, CSV dosyamızda bir satır olmaktadır.
 fputcsv($f, $line, $delimiter);
 }
 // Dosya başlangıc işaretini sıfırlıyor
 fseek($f, 0);
 // Tarayıcıya bir csv dosyası olduğunu belirtiyor
 header('Content-Type: application/csv');
 // Tarayıcıya görüntülenmek için olmadığını, kaydedilmek için olduğunu belirtiyor. 
 header('Content-Disposition: attachment; filename="'.$filename.'";');
 // Üretilen CSV tarayıcıya iletiliyor.
 fpassthru($f);
}

Bu fonksiyonumuz ile içerisine bir dizi ve dosya ismi göndererek CSV dosyasını oluşturmasını ve tarayıcıya çıktı vermesini sağlıyoruz. Kod içerisinde her bir satırı yorumlar ile açıkladım. Bu fonksiyonda geçici bir temp dosyası kullanmak yerine bellek alanı kullanmasını sağladım. Eğer geçici bir temp dosyası kullanmasını isterseniz $f = fopen(‘php://memory’, ‘w’); yerine $f = fopen(‘php://output’, ‘w’); komutunu kullanın.

Daha sonra ise ister veritabanından çekerek ya da ister json verisi olarak çekerek her bir satır dizi olacak şekilde bir dizi oluşturuyoruz ve fonksiyonumuza gönderiyoruz. Bu kadar. Örnek olarak aşağıda kod yazım.

$basliklar = array("Ad", "Soyad");
$satir1 = array("Erhan", "Kılıç");
$satir2 = array("Onur", "Bakır");

$icerik = array($basliklar, $satir1, $satir2);
array_to_csv_function($icerik, "export.csv");
// Diğer bir şekilde kullanımı
array_to_csv_function(array($basliklar, $satir1, $satir2), "export.csv");
4 1 vote
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments