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.


İlişkili Yazılar:

  1. Asp.Net ‘ de excel dosyası oluşturmak Bu yazımda sizlere Asp.Net projelerinde excel dosyası oluşturmayı göstereceğim. Tabi...
  2. Php ile MySql ‘den Xml oluşturmak Php’de xml dosyası oluşturmak en kolay yöntemlerden birisidir. Herhangi bir...
  3. Php’de Cvs(excel) deki verileri veritabanına kaydetmek Exceldeki verileri veritabanına kaydetmek için bir çok yol kullanabiliriz. Ben...
  4. Php ile adsense hesabınızdan ilgili verileri almak Dün nette bazı araştırmalar yaparken karşıma çok ilgimi çeken bir...
  5. Php’ de RSS oluşturmak Rss oluşturmayı anlatmadan önce rss’ in ne olduğunu ve ne...

6 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! [...]

Yorum Yapın