PHPExcel ile Birden fazla Sheet üzerinde çalışmak

Standard

Selam herkese,

PHP ile uğraşan insanların çoğunun birgün bir yerde excel ile yolları kesişir.. Çoğu insan bunu html çıktısını excel içine basarak çözer ama ben size daha stabil ve çoklu sayfalar ile çalışabileceğiniz bir yol göstereceğim şimdi..

Lafı çok uzatmaya gerek yok. Zaten aralara yorum satırı ekledim. Az kod bilgisi olan herkes anlayabilir..

//Excel Temel Ayarlarını Yapalım
require "PHPExcel.php";
require "PHPExcel/Writer/Excel2007.php";

//Excel Hazırlayalım
$objPHPExcel = new PHPExcel();

$excelFileName = seo($kampanya_ad).'_'.date('d-m-Y');

//sheet oluşturalım
    $objPHPExcel->createSheet();
    $objPHPExcel->setActiveSheetIndex(0);
    //Sheet adlandıralım
    $objPHPExcel->getActiveSheet()->setTitle('Ülke Raporu');
    // Excel Properties
    $objPHPExcel->getProperties()->setCreator($config->siteName." Admin");
    $objPHPExcel->getProperties()->setLastModifiedBy($config->siteName." Admin");
    $objPHPExcel->getProperties()->setTitle($excelFileName);
    $objPHPExcel->getProperties()->setSubject($excelFileName);
    $objPHPExcel->getProperties()->setDescription($excelFileName);

    $objPHPExcel->getActiveSheet()
        ->setCellValue('A1', 'Fotoğraf')
        ->setCellValue('B1', 'Fotoğraf Büyük')
        ->setCellValue('C1', 'Sipariş')
        ->setCellValue('D1', 'Ülke')
        ->setCellValue('E1', 'Ürün')
        ->setCellValue('F1', 'Ürün Kodu')
        ->setCellValue('G1', 'Barkod')
        ->setCellValue('H1', 'Beden')
        ->setCellValue('I1', 'Adet')
        ->setCellValue('J1', 'Kampanya')
        ->setCellValue('K1', 'Marka')
        ->setCellValue('L1', 'Alış Fiyatı')
        ->setCellValue('M1', 'Para Birimi')
        ->setCellValue('N1', 'KDV Tutarı')
        ->setCellValue('O1', 'KDV Oranı')
        ->setCellValue('P1', 'Tarih');

    $objPHPExcel->getActiveSheet()->getStyle("A1:H1")->getFont()->setBold(true);
    cellColor($objPHPExcel,'A1', '898989');
    cellColor($objPHPExcel,'B1', '898989');
    cellColor($objPHPExcel,'C1', '898989');
    cellColor($objPHPExcel,'D1', '898989');
    cellColor($objPHPExcel,'E1', '898989');
    cellColor($objPHPExcel,'F1', '898989');
    cellColor($objPHPExcel,'G1', '898989');
    cellColor($objPHPExcel,'H1', '898989');
    cellColor($objPHPExcel,'I1', '898989');
    cellColor($objPHPExcel,'J1', '898989');
    cellColor($objPHPExcel,'K1', '898989');
    cellColor($objPHPExcel,'L1', '898989');
    cellColor($objPHPExcel,'M1', '898989');
    cellColor($objPHPExcel,'N1', '898989');
    cellColor($objPHPExcel,'O1', '898989');
    cellColor($objPHPExcel,'P1', '898989');

Buraya kadar temel ayarlarımızı yaptık ve ilk sheet yani sayfamızı oluşturduk..
Şimdi döngü içinde kullanacağınız kod bloğu..

//Burada ilk kolon a resim koydum
$gdImage = imagecreatefromjpeg("http:" . $urun['fotothurl']);
$objDrawing = new PHPExcel_Worksheet_MemoryDrawing();
$objDrawing->setName('urun image');$objDrawing->setDescription('urun image');
$objDrawing->setImageResource($gdImage);
$objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG);
$objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
$objDrawing->setHeight(70);
$objDrawing->setWidth(70);
$objDrawing->setCoordinates('A'.$i);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());

//büyük haline de link verdim
$objPHPExcel->getActiveSheet()->getCell("B".$i)->getHyperlink()->setUrl("http:" . $urun['fotourl']);

$objPHPExcel->getActiveSheet()
    ->setCellValue('B'.$i, "Büyük Fotoğraf")
    ->setCellValue('C'.$i, $urun['siparis_no'])
    ->setCellValue('D'.$i, $ulke)
    ->setCellValue('E'.$i, $urun['urun_adi'])
    ->setCellValue('F'.$i, $urun['urun_kodu'])
    ->setCellValue('G'.$i, $urun['barkod'])
    ->setCellValue('H'.$i, $urun['beden'])
    ->setCellValue('I'.$i, $urun['adet'])
    ->setCellValue('J'.$i, $urun['kampanya_adi'])
    ->setCellValue('K'.$i, $urun['marka_adi'])
    ->setCellValue('L'.$i, number_format($urun['fiyat'], "2", ",", "."))
    ->setCellValue('M'.$i, strtoupper($urun['fiyat_alis_birim']))
    ->setCellValue('N'.$i, number_format(($urun['fiyat'] * $urun['kdv_orani'] / 100),"2",",","."))
    ->setCellValue('O'.$i, '%'.$urun['kdv_orani'])
    ->setCellValue('P'.$i, $urun['tarih']);

Buraya kadar herşey normal şekilde ilerledi.. Kolonlarla ilgili spesifik değişiklikler yapacaksanız PHPExcel kütüphanesine bakabilirsiniz. Ben hızlı yoldan yeni bir sheet yani sayfa açacağım ..

$objPHPExcel->createSheet();
$objPHPExcel->setActiveSheetIndex(1);
$objPHPExcel->getActiveSheet()->setTitle("Genel Rapor");

Buradan sonra aynı şekilde yine başlıklarınızı oluşturun renklendirin doldurun vs. ne istiyorsanız..

En hızlı ve kısa yoldan bu kadar olabilirdi herhalde 🙂

PHPExcel edinmek ve detaylı bilgi almak için: https://github.com/PHPOffice/PHPExcel

işinize yarar umarım, kolay gelsin..

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir