Geniş Ekran Modu Otomatik Ekran Boyutu Font Boyutunu Azalt Font Boyutunu Azalt Font Boyutunu Normal Yap Yazdır

Php İle Excel Dosyası Oluşturmak

Genelde, herhangi bir biçimlendirme söz konusu olmadığında, veritabanındaki bir bilgiyi ya da başka bir tabloyu excel ortamına aktarmak için csv yöntemini kullanırım. Bu yöntem herkesin bildiği gibi, her sütunu tab ya da noktalı virgül gibi bir karakterle ve her satırı da enter karakteri ile bölmekten ibaret. Ama biçimlendirme söz konusu olduğunda, mesela sütunlara bir genişlik vermek, yazıları bold yapmak, bazı hücreleri sayı ya da para tipine çevirmek gibi biçimlendirmelerde bu yöntem işe yaramamakta.

PHP ile Excel Dosyası OluşturmakBu yüzden Excel'in anlayacağı tarzda dosya üreten basit bir sınıf yazmam gerekti. Aşağıda verdiğim koddaki sınıfı kullanarak Xml Spreadsheet dosyaları oluşturabilirsiniz. Bu sayede Excel'in anlayacağı tarzda biçimli tablolara sahip olacaksınız.

Aşağıdaki kodu, kendinize göre düzenleyebilirsiniz. GetHeader metodunda değişiklikler yaparak daha fazla sitil ve özellik ekleyebilirsiniz. Ya da yapmak istediğiniz sitil ve biçimleri ilk başta Excel ile yapıp, Xml SpreadSheet olarak kaydettikten sonra, GetHeader metodunu yaptığınız bu dosyaya göre düzenleyebilirsiniz. Örnek kullanım, sınıf kodlarının altındadır.

  

<?php

/**
 * ExcelWriter 1.0
 *
 * Programmed by Fatih Tolga Ata
 * fatih at diyezon dot com
 * 13.01.2007
 */




Class ExcelWriter

{   
    var $output = "";
    var $state;
    var $ColumnWidths = array();
    var $Rows = "";
    var $DefaultWidth = 65;

    function ExcelWriter($author, $sheettitle)

    {

        $this->state = "BEGIN";

        $this->output .= $this->GetHeader($author, $sheettitle);

    }

    function Generate()

    {

        if ($this->state != "END")

        {

            $this->output .= $this->GetColumnWidths();

            $this->output .= $this->Rows;

            $this->output .= $this->GetFooter();

            $this->state = "END";

        }

        return $this->output;            

    }

                                   
    function GetHeader($author, $sheettitle)

    {

        $date = date("d-m-Y");

        $time = date("H:i:s");

        return chr(0xEF).chr(0xBB).chr(0xBF).<<<EOH

<?xml version="1.0"?>

<?mso-application progid="Excel.Sheet"?>

<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"

 xmlns:o="urn:schemas-microsoft-com:office:office"

 xmlns:x="urn:schemas-microsoft-com:office:excel"

 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"

 xmlns:html="http://www.w3.org/TR/REC-html40">

 <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">

  <Author>$author</Author>

  <LastAuthor>$author</LastAuthor>

  <Created>{$date}T{$time}Z</Created>

  <Version>12.00</Version>

 </DocumentProperties>

 <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">

  <WindowHeight>11985</WindowHeight>

  <WindowWidth>19095</WindowWidth>

  <WindowTopX>120</WindowTopX>

  <WindowTopY>45</WindowTopY>

  <ProtectStructure>False</ProtectStructure>

  <ProtectWindows>False</ProtectWindows>

 </ExcelWorkbook>

 <Styles>

  <Style ss:ID="Default" ss:Name="Normal">

   <Alignment ss:Vertical="Bottom"/>

   <Borders/>

   <Font ss:FontName="Arial" x:CharSet="162" x:Family="Swiss" ss:Size="11"

    ss:Color="#000000"/>

   <Interior/>

   <NumberFormat/>

   <Protection/>

  </Style>

  <Style ss:ID="s62">

   <NumberFormat ss:Format="Fixed"/>

  </Style>

  <Style ss:ID="s63">

   <NumberFormat ss:Format="#,##0.00 "YTL""/>

  </Style>

  <Style ss:ID="s64">

   <Font ss:FontName="Arial" x:CharSet="162" x:Family="Swiss" ss:Size="11"

    ss:Color="#000000" ss:Bold="1"/>

  </Style>

 </Styles>

 <Worksheet ss:Name="$sheettitle">

  <Table ss:DefaultColumnWidth="$this->DefaultWidth" ss:DefaultRowHeight="15">



EOH;

    }

    function GetFooter()

    {

        return <<<EOH

  </Table>        

  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">

   <PageSetup>

    <Header x:Margin="0.3"/>

    <Footer x:Margin="0.3"/>

    <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>

   </PageSetup>

   <Print>

    <ValidPrinterInfo/>

    <HorizontalResolution>600</HorizontalResolution>

    <VerticalResolution>600</VerticalResolution>

   </Print>

   <Selected/>

   <Panes>

    <Pane>

     <Number>3</Number>

     <ActiveCol>3</ActiveCol>

    </Pane>

   </Panes>

   <ProtectObjects>False</ProtectObjects>

   <ProtectScenarios>False</ProtectScenarios>

  </WorksheetOptions>

 </Worksheet>

</Workbook>

EOH;

    }

    function GetColumnWidths()

    {

        foreach($this->ColumnWidths as $width)

        {

            if ($width == 0)

                $width = $this->DefaultWidth;

            $str .= "   <Column ss:AutoFitWidth="1" ss:Width="$width"/>n";

        }

        return $str;

    }

    function AddRow($data_arr, $type_arr)

    {

        $this->state = "PROCESS";

        $this->Rows .= "   <Row>n";

        for ($i=0; $i <count($data_arr); $i++)

        {

            $type = "String";

            $style = "";

            switch($type_arr[$i])

            {

                case "num":

                    $style = " ss:StyleID="s62"";

                    $type = "Number";

                    break;

                case "cur":

                    $style = " ss:StyleID="s63"";

                    $type = "Number";

                    break;

                case "bold":

                    $style = " ss:StyleID="s64"";

            }

            $this->Rows .= "    <Cell$style>";

            $this->Rows .= "<Data ss:Type="$type">".$data_arr[$i]."</Data>";

            $this->Rows .= "</Cell>n";

        }

        $this->Rows .= "   </Row>n";          

    }

}

?> 

Bu da örnek kullanım:

 

<?

//Bu header fonksiyonları dosyayı download ettirebilmek içindir

header("Pragma: no-cache");

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

header("Cache-Control: private", false);

header("Content-Type: application/octet-stream");

header("Content-Disposition: attachment; filename="exceldosyasi.xml"");

header("Content-Transfer-Encoding: binary");

/////////////////////////////////////////////////////



    //sınıfı oluşturalım

    $writer = new ExcelWriter("Yazar ismi","Sheet adı");

    //sütun genişliklerini belirleyelim.

    $writer->ColumnWidths = array(165,0,50,0); //Sıfırın manası varsayılan değerdir.

    $veriler = array("deneme",15,20,"Bold yazı");

    $tipler = array("", "num", "cur", "bold"); //""=> String, "num"=>Sayı, "cur"=>Para, "bold"=>Bold String

    $writer->AddRow($veriler, $tipler);

    $excel = $writer->Generate();

    header("Content-Length: ".strlen($excel)."");

    echo $excel;

?>

 


Bu içerikle ilgili Yorumunuzu eklemek için burayı tıklayınız.

Yorumlar

1 yorum
09 Ocak 2010 13:47:26, Cumartesi
Mahir
Selamlar güzel bir konu ama kullanamadım. Örnek olarak açıklayabilirmisiniz.

Php Dersleri

Xampp Kurulumu
Php,apache,mysql hepsini tek dosyayla kurulumu
Xampp Kurulumu
Xampp apache, mysql, php ve phpmyadmin için kolay ve basit kurulum sağlayan bir uygulamadır.
PHP kurulumu
Windows 7 Üzerine Apache, Mysql, Php ve NetBeans Kurulumu (WAMP)
PHP nedir?
HTML kodlarının arasına yerleştirilmiş php kodlarından ayrıştırıp işleyerek sonuçta saf HTML formatı...
Verileri doğrulamak için PHP ile filtreleme işleml...
Ziyaretçilerden gelen verilerin istediğimiz formata uygunluğunu kontrol etmeliyiz ki, güvenlik açığı...
Php Mysql to XML
Bu yapıyı geliştirerek mysql veritabanınızdaki datalarınızı xml standartlarına dönüştürebilirsiniz.
Utf8 İle Iso-8859-9 Dönüştürmek
Bu işlemde php nin mb_convert_encoding fonksiyonunu kullanıyoruz.
Php5 İle Xml Dosya Oluşturmak
İngilizce bir makaledir.
Php4 İle Xml Dosya Oluşturmak
İngilizce bir makaledir.
Curl(client Url Library Functions) Nedir?
Curl ile kullanıcı kontrolü nasıl yapılır?
Harici Dosya İnclude
İnclude kullanımı ve örnekler
Class İçerisinden Class Tanımlamak
İç içe klaslar oluşturmak
Php Regular Expression
İngilizce bir makaledir.
Mysql_fetch_object, Mysql_fetch_array, Mysql_fetch...
Mysql_fetch_object, mysql_fetch_array, mysql_fetch_row, mysql_fetch_assoc, mysql_result kullanımı...
Php İle Mysql Veritabanından Bilgi Çekme
Mysql_fetch_assoc, mysql_fetch_row, mysql_fetch_object, mysql_fetch_array ve mysql_result metodları
Mysql İle Veritabanı Bağlantı Fonksiyonları
Mysql_result, mysql_fetch_array, mysql_fetch_row, mysql_fetch_object
Phpde Exception İstisna Yönetimi
Phpde istisna kontrol ve yönetimi
Excepiton
Exception türkçe anlamı istisna olan kelimedir. İstisnalar php'de hata yönetimini kolay, genişletile...
Karar Kontrol Mekanizması
Php 5 ile gelen yeniliklerin başında hata kontrol mekanizmasında yapılan yenilik gelmektedir. Php 4'...
En iyi 25 php template motoru
Php tabanlı web siteleri dizayn ederken, php kodlarını html kodlar arasına gömeriz. Fakat gün gel...
WinBinder İncelenmesi
WinBinder indirmek ve yüklemek , WinBinder Yapısı Hakkında Bilgiler , WinBinder Örnekleri , WinBinde...
Oop - Nesne Yönelimli Programlama
Artık ister istemez her programcının bulaştığı bu teknik hakkında sayısız makale yazılmıştır bu güne...
Nesneye Yönelimli Php
Classlarla ilgili ingilizce bir makale
Basit Class Yapılarında Kullanılan Kelimeler
New, ::, __construct, __autoload kullanımları
Classlarda Kullanılan Özel Kelimeler
Public, private, protected, extends, _construct
$_sessıon
$_sessıon[] değişkeni o anki oturumla ilgili olan değişkenleri tutmakta görevli olan varsayılan olar...
  • 1
  • 2

Ödev Gönder | İncelenmeyi Bekleyen Ödevler | Uygulama Resimleri | Uygulama Resmi Gönder | İnternet Üzerinden Sınav | Test Sorusu Gönder | Sınıf Karneleri | Anketler | Linkler
www.dijitalders.com

bilgidijitalders.com
Bu sayfalar en iyi 1024 x 768 ekran çözünürlüğünde görüntülenir.
Site içerikleri, site kullanıcıları tarafından yollanan içeriklerdir. Her hangi bir içeriğin lisanslı yahut şahsınıza ait olduğunu tarafımıza iletirseniz gerekli düzenlemeyi yapacağız. Kullanılan içerikler, siteyi kullanan öğrenciler ve araştırmacılar için kolaylık sağlamak amacıyla oluşturulmuştur.
Sayfada HATA! Olduğunu Düşünüyorsanız | Sık Kullanılanlara Ekle | www.dijitalders.com'u Ana Sayfam Yap | Web Tasarımcıya e-Posta
Bu site 845,255 kişi tarafından ziyaret edilmiştir.