Mar
9

Php’de excel dosyası oluşturmak

Yazar Enes Pekkaya    Kategori Php     Etiketler ,

Php’ de Excel dosyası oluşturmak için piyasada bir dolu kod mevcut ve öle kodlarki artık bir çoğu karmaşık yapıda ve bazıları hiçbir işe yaradığı yok. Yani hemen hemen hepsinde bazı eksiklikler mevcut. En temel şekilde çoğunda türkçe karakter sorunu yaşanmaktadır. Bu yazımda sizlere en kolay ve basit şekilde php’de excel dosyası oluşturmayı anlatacağım.


Excel dosyası oluşturmak için bizim 4 tane fonksiyonumuz mevcut. Bunlar ;

function xlsBOF() {
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}

function xlsEOF() {
echo pack("ss", 0x0A, 0x00);
return;
}

function xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}

function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}

xlsBOF() fonksiyonu ile excel dosyasının şablonunu oluşturmak için kullanılır.

xlsEOF() fonksiyonu ise excel dosyasının şemasını kapatmamıza yarar ve excel dosyasını oluşturur.

xlsWriteNumber($Row, $Col, $Value) fonksiyonu ise eğer hücreye gireceğimiz veri sayı ise bu fonksiyonu kullanacağız. Fonksiyonun alacağı değerleri sırasıyla söyleceyek olursak eğer ilki satır numarası, ikincisi sütun ve ücüncüsü ise o hücreye gireceğimiz değerdir.

xlsWriteLabel($Row, $Col, $Value)  fonksiyonu ise eğer hücreye gireceğimiz veri sadece sayısal verilerden oluşmuyor yani alfanumeric ise bu fonksiyonu kullanacağız. Fonksiyonun alacağı değerleri sırasıyla söyleceyek olursak eğer ilki satır numarası, ikincisi sütun ve ücüncüsü ise o hücreye gireceğimiz değerdir.

// Send Header
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=deneme.xls ");
header("Content-Transfer-Encoding: binary ");

Yukarıdaki kodlar sayesinde excel.php dosyamızın bir excel dosyası olduğunu söylemekteyiz.  Burada değiştirebileceğiniz tek yer var;
header(“Content-Disposition: attachment;filename=deneme.xls “);
çıktı olarak alınmak istenen dosya adını burada değiştirebilirsiniz. Ben deneme.xls yaptım siz istediğiniz ismi verebilirsiniz.

// XLS Data Cell

xlsBOF();
xlsWriteLabel(0,0,"NO");
xlsWriteLabel(0,1,"Ad Alani");
xlsWriteLabel(0,2,"Basvuru Tarihi");

$xlsRow = 1;

for($i = 1 ; $i <= 50 ; $i++)
{
xlsWriteNumber($xlsRow, 0, $i);
xlsWriteLabel($xlsRow, 1, "deneme". $i);
xlsWriteLabel($xlsRow, 2, $today);
$xlsRow++;
}

xlsEOF();
exit();

Yukarıdaki kodda ise sırasıyla açıklamam gerekirse;

  • xlsBOF() ile Excel doyasının şablonunu oluşturdum.
  • xlsWriteLabel(0,0,”NO”) ile sıfırncı satırın sıfırıncı sütununa NO değerini girdim.

ve devam ederseniz eğer ilgili hücrelere değerlerini ya sayı olarak yada sayı olmayan (alfanumeric) değerlerini girdim.

Son  olarakda xlsEOF(); yazarak excel dosyamın şablonunu bitirdiğimi söyledim ve böylece excel dosyamı oluşturdum.

Bir çok arkadaşımıza  bu yazımın faydalı olacağını düşünüyorum.

Yukarıda anlatmış olduğum konunun ilgili örneğini indirmek için tıklayın.

Kodun alınmış olduğu site adresi : http://www.appservnetwork.com/modules.php?name=News&file=article&sid=8

21 yorum bulunmaktadır - “Php’de excel dosyası oluşturmak”

  • Vodafone Sanal Kontör 20 Kasım 2009, 11:07

    mükemmel bir anlatım gerçekten emeğinize sağlık çok faydalı tşk.ler…

    bir sorum olacak bunda da yardımcı olursanız çok memnun olurum benim amacım veritabanından verileri alıp exel e aktarmaktı, veritabanına bağlandım + verileri çağırdım ekrana da yazıyor sizin yardımınızla exel dosyası da oluştu ancak bu çektiğim verileri exel dosyasına nasıl aktarabilirim yani onun içine kayıt etmesini nasıl söyleyebilirim.

    şimdiden tşk.ler..

  • Enes Pekkaya 20 Kasım 2009, 21:06

    Anladığım kadarıyla kullanıcı linke tıkladığında excel oluşur ve yükleme ekranı çıkartır. Dosyanın ismide deneme.xls dir. Yani ekrana nası basıyor pek anlamadım 🙂

  • Cemal 06 Nisan 2010, 18:10

    Peki bu yazdığımız yazıları şekillendirmek en boy vermek istersek veya kolon genişliğini yüksekliğini değiştirmek istersek ne yapacağız ?

  • Enes Pekkaya 06 Nisan 2010, 21:53

    Bu kod ile görselliğiyle oynamadan sadece verileri excele aktarmaya yaramaktadır. Dediğiniz işlemleri yapmak için internette araştırma yapıp ilgili eklemeler yapmak gerekir. Benim şuan için pek vaktim yok ama olursa ilgili kod parçacıklarını araştıracağım.

  • Salih ZEYHAN 27 Nisan 2010, 14:28

    mükemmel

  • Php’de excel dosyası oluşturmak « Web Önerilerimiz 09 Mayıs 2010, 13:05

    […] Kaynak Bu yazıyı paylaşın! […]

  • gerger 01 Kasım 2010, 18:22

    İlginiz ve bilginiz için teşekkür ederim.

  • cmycll 08 Kasım 2010, 12:10

    oldukça kullanışlı olan uygulamanızı paylaştığınız ve herhangi bir soru işaretine yer bırakmayan açıklamalarınız için teşekkür ederim. İyi çalışmalar.

  • SoulSmasher 13 Kasım 2010, 09:49

    Ah bi de kodu nereden aldığınızı söyleseydiniz..

    Bu vermiş olduğunuz kodlar appserv in sitesinden alıntıdır

    http://www.appservnetwork.com/modules.php?name=News&file=article&sid=8

  • Enes Pekkaya 14 Kasım 2010, 09:14

    SoulSmasher ben bu kodu zamanında bulmuştum ve malesef site linkini unutmuştum. Sayende alıntıdır ibaresini yerleştirebileceğim.

  • Selim 22 Nisan 2011, 19:09

    Çok faydalı bir paylaşım…
    Teşekkür ederim..

    Yanlız bir sorum olacaktı…
    verilerimizi yeni excel dosyasına yazdırmaktansa
    server üzerine yüklediğimiz bir excel dosyası üzerine yazdıramazmıyız?
    yani şablon olarak hazırladığımız bir excel dosyasının içerisine yazmamız mümkünmüdür

  • Enes Pekkaya 22 Nisan 2011, 20:01

    Evet yapılabilinir. Burda yapmanız gereken ilk önce txt dosyasının içine ilgili excel kodlarını yazmanız gerekiyor. Ondan sonra txt dosyasının uzantısını xls yaparak sunucunuzda excel dosyası oluşturabilirsiniz. Benim örneğimde kullanıcının download yapmasını sağlıyorum. Siz bunun sunucuya yüklenen olayını da yapabilirsiniz.

  • aykut 02 Ağustos 2011, 12:09

    Sql Sorgusu Kullanarak PHP’de Oluşturgumuz Alanları Nasıl Excel’e Aktarabiliriz.Yardımcı Olursanız Sevinirim.İyi ÇAlışmalar

  • eren yener 11 Ağustos 2011, 15:53

    Guzel bir anlatim olmus tesekkurler

  • Eray Kaya 23 Kasım 2011, 23:19

    Türkçe karakter problemi alıyorum.Database’deki karakter kodlamasıyla kaynak dosyasının karakter kodlaması aynı.Bir türlü sorunu çözemedim.

  • Enes Pekkaya 24 Kasım 2011, 09:08

    Hangi karakter setini kullanıyorsunuz? Eğer UTF-8 ise excelin oluşturulduğu dosyanında formatının UTF-8 olması gerekmekte. Bunu yapabilmek için notepad de dosyayı açın farklı kaydet diyip Karakter setini ANSI’den UTF-8 e dönüştürün. Bunu yaptığınızda sorununuzun çözümlenmesi gerekir.

  • absenist 09 Ocak 2012, 16:06

    bu kodlara nasıl renk ve sitil ekleyebilirim?

  • Enes Pekkaya 10 Ocak 2012, 09:24

    Malesef o konuda istek olmadığı için hiç araştırma yapmadım.

  • nomak 14 Nisan 2012, 00:02

    Hocam gerçekten mükemmel bi sadelikte kod. Teşekkür ederim

  • Yaşar T 20 Ekim 2012, 15:40

    eline sağlık harikasın dostum

  • Manowar 22 Ağustos 2013, 21:31

    Çok teşekkürler.

Yorum Yapın

 

Twitter'dan Takip Et! Twitter'dan Takip Et!

Etiketler

Son Yazılar

Son Yorumlar

Bağlantılar

Arşivler