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
21 yorum bulunmaktadır - “Php’de excel dosyası oluşturmak”
Yorum Yapın
Etiketler
Son Yazılar
- Uzak sunucuda bulunan android cihaz ile otomasyon
- Mac’ de çoklu Java versiyon yönetimi
- İş yarar docker komutları
- Eski branchlerin git’ den silinmesi
- Kubernetes Süresi Dolmuş Sertifikaları Yenilemek
Son Yorumlar
- Hosting koşuşturması için
- Garanti Sanal Pos Kurulumu, Sorunlar ve Çözümler için
- Visual Studio Toolbox’a component(bileşen) eklenmesi için
- “File is too large for destination file system” hatasını gidermek için
- Php’de UTF-8 Türkçe karakter sorunu ve çözümü için
Bağlantılar
Arşivler
- Kasım 2021
- Eylül 2021
- Ağustos 2021
- Temmuz 2021
- Aralık 2020
- Kasım 2020
- Ekim 2020
- Eylül 2020
- Kasım 2017
- Mayıs 2017
- Mart 2017
- Şubat 2017
- Ocak 2017
- Nisan 2015
- Aralık 2014
- Mayıs 2014
- Eylül 2013
- Haziran 2013
- Şubat 2013
- Kasım 2012
- Ekim 2012
- Eylül 2012
- Mart 2012
- Şubat 2012
- Ocak 2012
- Aralık 2011
- Kasım 2011
- Ekim 2011
- Eylül 2011
- Temmuz 2011
- Haziran 2011
- Mayıs 2011
- Mart 2011
- Ocak 2011
- Aralık 2010
- Kasım 2010
- Ekim 2010
- Eylül 2010
- Ağustos 2010
- Temmuz 2010
- Haziran 2010
- Mayıs 2010
- Nisan 2010
- Mart 2010
- Şubat 2010
- Ocak 2010
- Haziran 2009
- Mayıs 2009
- Nisan 2009
- Mart 2009
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.
Hocam gerçekten mükemmel bi sadelikte kod. Teşekkür ederim
eline sağlık harikasın dostum
Çok teşekkürler.