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");