Php’de excel dosyası oluşturmak
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
More From EsPUnholy
EsPUnholy Recommends
- Madrid`s Popular Triathlon Results (Sportize.me)
- Beni Oku Dosyası (ekmekspor)
18 yorum bulunmaktadır - “Php’de excel dosyası oluşturmak”
Yorum Yapın
Etiketler
Son Yazılar
- IFrame ‘in yüksekliğini içeriğe göre ayarlamak
- Bmp uzantılı resim dosyasını jpg veya png olarak kaydetmek
- Php Resim Boyutlandırmasında Memory Limit sorunu
- PHP fatal libpng error: zlib error
- “File is too large for destination file system” hatasını gidermek
Son Yorumlar
- Php ile MySql ‘den Xml oluşturmak için Enes Pekkaya
- Php ile MySql ‘den Xml oluşturmak için ercan akar
- IFrame ‘in yüksekliğini içeriğe göre ayarlamak için Enes Pekkaya
- IFrame ‘in yüksekliğini içeriğe göre ayarlamak için Erhan Saydam
- Php’de excel dosyası oluşturmak için Enes Pekkaya
Haftanın Özlü Sözü
Bağlantılar
- Googlepagerankseo.org
- Innova Bilişim Çözümleri
- Onur Değerli
- Pleksus Bilişim Teknolojileri
- Sinan Gül
- Taner Günal


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..
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
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 ?
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.
mükemmel
[...] Kaynak Bu yazıyı paylaşın! [...]
İlginiz ve bilginiz için teşekkür ederim.
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.
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
SoulSmasher ben bu kodu zamanında bulmuştum ve malesef site linkini unutmuştum. Sayende alıntıdır ibaresini yerleştirebileceğim.
Ç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
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.
Sql Sorgusu Kullanarak PHP’de Oluşturgumuz Alanları Nasıl Excel’e Aktarabiliriz.Yardımcı Olursanız Sevinirim.İyi ÇAlışmalar
Guzel bir anlatim olmus tesekkurler
Türkçe karakter problemi alıyorum.Database’deki karakter kodlamasıyla kaynak dosyasının karakter kodlaması aynı.Bir türlü sorunu çözemedim.
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.
bu kodlara nasıl renk ve sitil ekleyebilirim?
Malesef o konuda istek olmadığı için hiç araştırma yapmadım.