15 Aralık 2010 Çarşamba

Php'den xls (excel) uzantılı çıktı alma

Merhaba arkadaşlar, 1000 lerce ürünün excel formatında dökümünü alıp müşteriye göndermem gerekiyordu. Sanırım fiyatlarda değişiklik olacakmış. Değişen fiyatlarda aynı şekilde excel formatında geri gelecek. Bunun için biraz araştırma yaptım ve http://phpexcel.codeplex.com/ şöyle bir class buldum. Bu class sayesinde veritabanındaki verileri xls olarak kaydettim. Oldukça başarılı.

download.php
<?php
/*
 * by Gökhan KAYA
 * gokhanlab.blogspot.com
 */
date_default_timezone_set('Europe/London');
// sınıfı dahil et
require_once 'Classes/PHPExcel.php';
// veritabanına bağlan
mysql_connect("localhost","root","root") or die ("Hata: MySQL baglanti hatasi.");
mysql_select_db("db") or die ("Hata: Veritabani baglanti hatasi.");

$objPHPExcel = new PHPExcel();
// ıvır zıvır
$objPHPExcel->getProperties()->setCreator("Gökhan Kaya")
                             ->setLastModifiedBy("Gökhan Kaya")
                             ->setTitle("excel deneme")
                             ->setSubject("excel deneme")
                             ->setDescription("excel deneme.")
                             ->setKeywords("office 2007 openxml php")
                             ->setCategory("Test result file");
// 1. satırda a1 ve b1 kolonlarına başlık yazdım
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Kod')
            ->setCellValue('B1', 'Fiyat');

$q = mysql_query("select urun_kodu,fiyat from urunler");
// 2. satırdan başlatıyoruz verilerimizi. 1. satırda başlık var.
$i = 2;
while ($c = mysql_fetch_assoc($q)){
    $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A'.$i, $c['urun_kodu'])
            ->setCellValue('B'.$i, $c['fiyat']);
  $i++;
}
$objPHPExcel->getActiveSheet()->setTitle('Test');
$objPHPExcel->setActiveSheetIndex(0);

// sonuc.xls olarak indirt
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="sonuc.xls"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
?>

0 yorum:

Yorum Gönder