Birkaç satır php kodu ile mysql veri tabanındaki verileri excele aktarabiliriz. Yapmanız gereken tek şey aşağıdaki örnek kodları kendi mysql verilerinize göre düzenlemeniz olacaktır.
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.
Öncelikle veri tabanı bağlantımızı hazırlayalım. 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?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; } ?> |
Yukarıdaki kodları isterseniz direk sayfanıza dahil ederek, isterseniz de ayar.php olarak kaydettikten sonra require_once(‘ayar.php’) komutu ile istediğiniz başka bir php dosyasına include edebilirsiniz.
Aşağıdaki fonksiyon veri tabanından gelen düzenli verileri Excel satır ve sütunlarına aktarma işini gerçekleştirecek.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | 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ından verileri çekecek php kodunu yazalım.
1 2 3 4 5 6 7 8 9 10 11 | $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.
1 2 3 | exportExcel('adres_liste',$columns,$data,$replaceDotCol); |
Çalışan örnek dosyayı indirmek için TIKLAYIN!
hocam yaptım oldu da müşterinin adresi uzun olunca 2. satira geciyor yani 1 sipariş 2 satır yer kaplıyor düzenlerken sorun yaşıyorum buna çözüm var mıdır ?