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
Yazar Hakkında
Kendi Halinde Bir Backend Developer