Php ile Excel Dosyasından Veri Okuma

Php ile geliştirdiğiniz projelerde; müşterilerinizden, var olan verilerinin excel ile gönderilerek, sisteme işlenmesi yönündeki bir taleple karşılaşmışsınızdır. Bu makalede; bu işlemin php ile kolay, hızlı ve veri kaybı olmadan nasıl yapabileceğimizi anlatmaya çalışacağım. İşlemi, PhpExcel kütüphanesini kullanarak yapacağız. Kütüphaneyi bu adresten indirebilirsiniz. İşlemi gerçekleştirirken dikkat edilmesi gereken birkaç nokta var. Bunları da anlattıktan sonra örnek kodu vereceğim. Bunlardan en önemlisi dosya büyüklüğü. Dosya ne kadar büyük olursa işlem o kadar uzun sürüyor. Bu nedenle büyük dosyalarda “max_execution_time” hatası alabilirsiniz. Eğer kullandığınız sunucu kendinize ait ise “max_execution_time” değerini arttırabilirsiniz, ancak paylaşımlı hosting kullanıyorsanız, dosyayı parçalayarak işlemeniz daha mantıklı. Karşılaşabileceğiniz diğer sorun da dosya büyüklüğüyle ilgili olan “max memory usage” hatası. Diğer hatada olduğu gibi burada da çözüm kullandığınız sunucu/hosting türüne göre değeri arttırmak ya da  dosyayı parçalayarak işlemek. Bu gibi hatalarla karşılaşma durumuna karşı, kod içerisine bir sayaç yerleştirerek, işlem sonunda değerleri karşılaştırmanız, veri kaybının önüne geçmek için önemli. Karşılaştığım son sorun ise, başlık satırı. Dosya işlenirken başlık satırı da okunuyor ve diğer veriler gibi işlenebiliyor. O nedenle bu satıra da dikkat etmekte yarar var. Aşağıda örnek kodu paylaşıyorum. Bir hata ile karşılaşırsanız lütfen bildiriniz. Yorumlarınızı esirgemeyiniz lütfen.

Veri Okuma

<?php
error_reporting(E_ALL);//tüm hata gösterimleri açılıyor.
set_time_limit(0);//max_execution_time değeri olabilecek en üst değere getirliyor

include 'Classes/PHPExcel/IOFactory.php';//kullandığımız kütüphane
$inputFileName = 'dosya.xls';//işlenecek dosya
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
$excel_satirlar = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);//excel dosyasındaki aktif sekme kullanılıyor

$i=0;//sayac
foreach($excel_satirlar as $excel_satir){
    $i++;
    //veriler değişkene alınıyor
    $veri_1 = $excel_satir['A'];
    $veri_2 = $excel_satir['B'];
    $veri_3 = $excel_satir['C'];
    $veri_4 = $excel_satir['D'];
    $veri_5 = $excel_satir['E'];

    //bu kısımdan sonra verileri nasıl işlemek istiyorsanız ona göre kodları yazmamış gerekiyor. örneğin veri tabanına kaydetmek.
    }
}
echo $i;//satır sayısını kontrol için en son kaç satırın işlendiğini sayaçtan ekrana basıyoruz.
?>

Not : Her ihtimale karşı okunan verileri sql injection’a karşı süzmekte yarar var.

Php ile Excel Dosyası Oluşturma için ilgili makaleyi inceleyebilirsiniz.