PHP Excell'e Veri Aktarma

PHP Excell'e Veri Aktarma

Hepinize merhaba dostlarım 😊. Yine yoğun geçen (bana göre kat kat yoğun geçiyor 😅) bir haftanın sonunda gelen pazar gününü güzel bir şekilde değerlendirmemiz her zaman önemli bunu siz de çok iyi biliyorsunuz. Bu haftanın başında yüksek trafikli bir web sitesini teslim alan müşterinin isteğine özel bir modül geliştirdim. Bunu geliştirirken de aklıma gelen tek şey ise

Bunu ben hemen haftasonu yazılımcı dostlarıma anlatayım 😊

Yalan yok vallahi de oldu billahi de oldu 😅. Haftasonu geldi çattı bugün pazar siz de biliyorsunuz artık. Yeni makale yeni bilgi 😊. Ben de yazıya yavaştan gireyim dostlarım yine çok uzattım. Konumuz başlıktan da anlayacağınız üzere "PHP Excell'e Veri Aktarma" şeklinde çok sık duyduğumuz ve hemen hemen her yerde karşımıza çıkan bu modülü gelin hep beraber yazalım dostlarım 😊.

Öncelikle dostlarım sınav kayıt sistemini excell e aktarma islemimiz olsun (Mysql e sınav başvuruları gelsin biz de onu excell e aktaralım 😊). Bunun için bir tane baglan.php isminde dosyamızı oluşturalım ve buna bağlantı kodlarımızı yazalım

<?php

try {
    $db = new PDO("mysql:host=localhost; dbname=ogrenci-sinav-kayit; charset=utf8","root","");
}catch (PDOException $e){
    echo $e->getMessage();
}

şeklinde bağlantı kodumuzu yazalım dostlarım. Bağlantı kodumuzu yazdık dostlarım. Daha sonrasında ise örnek bir tablo oluşturalım. Ben kolonları şu şekilde tuttum hemen size örnek vereyim

  • id
  • adsoyad
  • tc
  • hes
  • okul
  • veli_adsoyad
  • veli_telefon
  • sinif
  • saat
  • notunuz
  • created_at (Eklenme tarihi)
  • ip_address (Hangi ip adresinden geldi. Bunu güvenlik için tutuyoruz)

şeklinde alanlarımızı oluşturalım dostlarım. Bu kısmı da yazdıktan sonra gelelim dostlarım index.php dosyamıza. Hemen index.php dosyası oluşturalım ve

<?php

require_once 'baglan.php';

şeklinde sayfamızın en üstüne veri tabanı bağlantı kodlarımızı yazalım. Bunu yazdıktan sonra dostlarım en ama en önemli, bizim için nimet niteliğinde olan bir kütüphaneyi alalım. Linki hemen koyayımm buraya

https://github.com/PHPOffice/PHPExcel/tree/1.8/Classes

şeklinde github hesabını size vereyim dostlarım hemen hemen hepimiz kullanıyoruz. Proje dosyanız içerisinde PHPExcell isminde bir klasör oluşturalım dostlarım ve daha sonrasında bu klasör içerisine bu dosyaları aktaralım. Daha sonra proje bağlantı kodumuzun altına

require_once 'PHPExcell/PHPExcel.php';

şeklinde kütüphanemizi ekletelim. Bu kütüphanemizi de ekledikten sonra Header dosyamızı ekleme işlemimizi gerçekleştirelim. Bunlar da

header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment;filename=records.xls");
header("Cache-Control: max-age=0");
header("Cache-Control: max-age=1");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: cache, must-revalidate");
header("Pragma: public");

şeklinde Header kodlarımızı yazdık. Bu kısımdan bu sayfanın çıktısının hangi formatta olmasınu istediğimizi, indireceğimiz doosyamızın ismini vs gibi ayarları bildiriyoruz. Bu kısmı da yaptıktan sonra dostlarım diğer kısma gelelim

$myExcell = new PHPExcel();
$myExcell->getActiveSheet()->setTitle("Başvurular");
$myExcell->getActiveSheet()->setCellValue("A1","id");
$myExcell->getActiveSheet()->setCellValue("B1","adsoyad");
$myExcell->getActiveSheet()->setCellValue("C1","tc");
$myExcell->getActiveSheet()->setCellValue("D1","hes");
$myExcell->getActiveSheet()->setCellValue("E1","okul");
$myExcell->getActiveSheet()->setCellValue("F1","veli_adsoyad");
$myExcell->getActiveSheet()->setCellValue("G1","veli_telefon");
$myExcell->getActiveSheet()->setCellValue("H1","sinif");
$myExcell->getActiveSheet()->setCellValue("I1","saat");
$myExcell->getActiveSheet()->setCellValue("J1","notunuz");
$myExcell->getActiveSheet()->setCellValue("K1","created_at");
$myExcell->getActiveSheet()->setCellValue("L1","ip_address");

bu kısımda biz hangi kolonlara hangi başlık gelecekse bunu yazıyoruz. Bunları bir çıktı olarak alacağımız için hangi kolona hangi veri gelecek bunları belirtiyoruz. Bu kısmı da ayarladıktan sonra dostlarım artık veri tabanı kodlarımızı yazalım

$sorgu = "SELECT * FROM basvuru_form";
$basvuru = $db->prepare($sorgu);
$basvuru->execute();
$basvuru_cek = $basvuru->fetchALL(PDO::FETCH_ASSOC);

şeklinde mysql tablomuzdan verilerin hepsini tamamen çekiyoruz dostlarım. Bu kısımdan gelen verileri işlemek üzere aldık dostlarım şimdi de yavaştan kolonlara gelecek olan verilerimizi yazalım

$i=2;
foreach ($basvuru_cek as $basvuru){
    $myExcell->getActiveSheet()->setCellValue("A".$i,$basvuru['id']);
    $myExcell->getActiveSheet()->setCellValue("B".$i,$basvuru['adsoyad']);
    $myExcell->getActiveSheet()->setCellValue("C".$i,$basvuru['tc']);
    $myExcell->getActiveSheet()->setCellValue("D".$i,$basvuru['hes']);
    $myExcell->getActiveSheet()->setCellValue("E".$i,$basvuru['okul']);
    $myExcell->getActiveSheet()->setCellValue("F".$i,$basvuru['veli_adsoyad']);
    $myExcell->getActiveSheet()->setCellValue("G".$i,$basvuru['veli_telefon']);
    $myExcell->getActiveSheet()->setCellValue("H".$i,$basvuru['sinif']);
    $myExcell->getActiveSheet()->setCellValue("I".$i,$basvuru['saat']);
    $myExcell->getActiveSheet()->setCellValue("J".$i,$basvuru['notunuz']);
    $myExcell->getActiveSheet()->setCellValue("K".$i,$basvuru['created_at']);
    $myExcell->getActiveSheet()->setCellValue("L".$i,$basvuru['ip_address']);
    $i++;
}

işte olayın biraz karmaşıklaştığı kısım burası dostlarım. Yukarıdaki kısımda biz başlıkları yazmıştık ya şimdi de bu başlıklarla eşleşecek şekilde verilerimizin listelenme işlemini gerçekleştirdik. $i isimli değişkende 2 den başlatıp hangi kısma hangi veri yerleşecek şeklinde bir ayarlama yaptık ve verilerimizi listelettik dostlarım. Daha sonrasında ise bu dosyamızı bizim geri indirmemiz gerekti. İşte bunun için de dostlarım

$objWriter = PHPExcel_IOFactory::createWriter($myExcell,"Excel2007");
$objWriter->save("php://output");
exit;

şeklinde kodlarımızı yazdıktan sonra dostlarım bizim verilerimiz .xls dosyasında karşımıza listeleniyor. Bu bir nimet dostlarım vallahi de billahi de nimet 😊. Özellikle veri girişi yapan çalışanların veya verilerin saklanmasından sorumlu olan çalışanların ve aynı zamanda biz yazılımcıların çok ama çok beğendiği, müşterilere hemen hemen her zaman sunulan bir modüldür.

Eveeet dostlarım 😊. PHP Excell'e Veri Aktarma konumuzu burada sonlandırmış bulunuyoruz. Konuyu elimden geldiğince dilim döndüğünce anlatmaya çalıştım. Umarım faydalı olmuşumdur dostlarım. Eksik veya hatalı bir anlatım yapmış isem benimle her zaman iletişime geçebilirsiniz. Konu başlarda biraz karmaşık veya zor gelebilir dostlarım anlıyorum. Bu süreçte sizlerden yapmanızı istediğim tek şey her yazımda da değindiğim gibi "İstikrarlı ve Azimli Olmalısınız, Bolca pratik yapmalısınız". Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizler için kaçınılmaz olacaktır 😊

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıMobbing (Psikolojik Şiddet) Nedir ?
Sonraki YazıPHP Two Factor Authentication Yapımı
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz