10 Şubat 2017 Cuma

Php ile mysql veritabanındaki verileri excele aktarma işlemi nasıl yapılır?



Merhaba sevgili arkadaşlar bu makalemizde php ile mysql veri tabanındaki verileri excele nasıl aktarabileceğimizi göreceğiz.

Bazı durumlarda veri tabanındaki kişi listelerini, sipariş listelerini veya çeşitli bilgileri Excel programına aktarma ihtiyacı duyarız. Aşağıda yazdığım kodları kendi veritabanınıza göre düzenleyerek hızlıca Excel listeleri hazırlayabilirsiniz.

Türkçe karakter problemi yaşamamak için öncelikle veritabanı türünün utf8_general_ci dil kodlamasıyla tanımlandığından emin olun.


Öncelikle veri tabanı bağlantımızı hazırlayalım.

<?php error_reporting(0); 
ob_start();
  $vt_sunucu          = 'localhost';
  $vt_kullanici_adi   = 'kullanici_adi’;
  $vt_kullanici_sifre = 'kullanici_sifre';
  $vt_adi                        = 'veri tabanı adı';

  @ $mysql_baglanti = mysql_connect($vt_sunucu,$vt_kullanici_adi,$vt_kullanici_sifre,$vt_adi);
  @ mysql_select_db("$vt_adi",$mysql_baglanti) or die ("Veritabanı Seçim Hatası");
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_turkish_ci'"); 


if (mysql_errno())
  {
    echo 'Hata: Veritabanına Bağlanılamıyor.. Lütfen Tekrar Deneyiniz';
            exit;
  }
?>


Aşağıdaki fonksiyon veri tabanından gelen düzenli verileri Excel satır ve sütunlarına aktarma işini gerçekleştirecek.


function exportExcel($filename='ExportExcel',$columns=array(),$data=array(),$replaceDotCol=array()){
    header('Content-Encoding: UTF-8');
    header('Content-Type: text/plain; charset=utf-8');
    header("Content-disposition: attachment; filename=".$filename.".xls");
    echo "\xEF\xBB\xBF"; // UTF-8 BOM
     
    $say=count($columns);
     
    echo '<table border="1"><tr>';
    foreach($columns as $v){
        echo '<th style="background-color:#CCC; font-size:16px;">'.trim($v).'</th>';
    }
    echo '</tr>';
    foreach($data as $val){
        echo '<tr>';
        for($i=0; $i < $say; $i++){
            if(in_array($i,$replaceDotCol)){
                echo '<td style="font-size:16px;">'.str_replace('.',',',$val[$i]).'</td>';
            }else{
                echo '<td style="font-size:16px;">'.$val[$i].'</td>';
            }
        }
        echo '</tr>';
    }
}


Tanımlamalarımızı Yapalım...

/* TANIMLAMALAR */

$columns=array();
$data=array();

*/dizileri tanımladık*/

/* Sütun Başlıkları */
$columns=array(
    'Sıra No',
    'Sipariş No',
    'Adı Soyadı',
    'Telefon',
    'Adres',
    'İl/İlçe'
);

*/Stun başlıklarını tanımladık. Burada dikkat edeceğiniz nokta son tanımlamadan sonra virgül (,) koymayın yoksa hata alırsınız.*/


Şimdi veri tabanımıza sorgumuzu göndererek verileri çekebiliriz.

$siparisler=@mysql_query("SELECT * FROM siparisler);
$sira_no=1;
while($exc = mysql_fetch_array($sip_ex)){

$data[]=array($sira_no,$exc['id'],$exc['adsoyad'],$telefon,$exc['adres'],$il['il_ilce']);
$sira_no++;
}

//Buradaki $sira_no değişkeni Excel tablosunun A sütununda 1 den başlayacak kayıt sayısı kadar otomatik artacak


Son olarak oluşturduğumuz kayıt dizilerini Excel tablosuna aktaracağız.

exportExcel('adres_liste',$columns,$data,$replaceDotCol);


Çalışan örnek dosyayı indirmek için TIKLAYIN!



Mysql verilerini php kullanarak excele aktarma işlemi bu kadar. Konuyla ilgili düşünce ve sorunlarınızı yorumlar bölümünden paylaşabilirsiniz.

Benzer Yayınlar

Php ile mysql veritabanındaki verileri excele aktarma işlemi nasıl yapılır?
4/ 5
Oleh

Abone Olun

Mail listemize abone olarak, yeni makalelerden anında haberdar olabilirsiniz.

4 yorum

Yaz yorum
avatar
Adsız
14 Şubat 2017 16:58

İnternette bulduğum bir çok kaynakta türkçe karakter sorunu çıkmıştı. Bu örnek gerçekten çok işime yaradı. Çok teşekkür ederim.

Cevapla
avatar
Adsız
10 Mart 2017 09:14

Mysql'den excele aktarım ile ilgili bir çok kaynakta Türkçe karakter hatası çıkıyordu. sizin verdiğiniz örnekte sorun çıkmadı. gayet güzel çalıştı. Emekleriniz için teşekkürler.

Cevapla
avatar
13 Mayıs 2018 22:25

Merhaba, öncelikle çok işe yarar bir uygulama olmuş, emeğinize sağlık. benim sıkıntım şu; ben bir sorgu sayfasından javascript ile post ediyorum excel php sayfasına orada sorgu sonucunu alıp, excel e aktarıyorum. ama sonucu html olarak alıyorum.
function excel_sorgu(form) {
$.ajax({
type:'POST',
url:'../merkez/isleyen_dosyalar/dosya_sorgu_excel.php',
data:$(form).serialize(),
success: function (msg) {
$('#excel_sonuc').html(msg);
}
});
}

şeklinde. ve sayfaya sonucu basıyor. çalışmasında hiç bir sıkıntı yok. tek sıkıntım bunu xls olarak indirmek istiyorum. yardım ederseniz çok sevinirim.

Cevapla
avatar
21 Mayıs 2018 18:40

bir sorgulama.php sayfasından ajax post yolu ile sorgu sonucunu çekip, sonucu aynı sayfaya çağırıyorum. benzer şekilde bu sonucu excel olarak indirmek istiyorum. ne önerebilirsiniz?

Cevapla