PHP ile Word ve Excel dosyaları oluşturmak

31 Ekim Pazartesi ´05
Dikkat: Bu yazının yazılma tarihinin üzerinden en az 60 gün geçmiş. İçerisindeki bilgiler güncelliğini yitirmiş olabilir. Yorumları ve güncellemeleri göz önünde bulundurarak yazıyı takip ediniz.

Nasıl?

PHP'deki COM nesnesi sayesinde Word, Excel gibi programlarla bağlantı kurulup onları kolayca yönetebiliriz. Tabiki kullanılacak olan bu programlar çalışılan sunucuda yüklü olması gerekmektedir. İşte buna ait kısa bir kodla rahatça anlayabileceğiniz 1-2 örnek. Basitçe bir metini bir word dosyasına (.doc) kaydetmeyi aşağıdaki örnekte görelim :
# Word programını çalıştırıyoruz
  $Word = new COM("Word.Application") or die("Word Başlatılamıyor!");

# işlemler
  $Word->visible = 0;

  // yazı ekliyoruz
  $Word->Documents->Add();

  // kursörün olduğu noktadan yazı yazdırmaya başlıyoruz.
  $Word->Selection->TypeText("Bu metin php tarafından dinamik olarak yazdırılmıştır.");

# kaydettiriyoruz
  $Word->SaveAs("C:Deneme.doc");

  // kapatıyoruz
  $Word->Quit();
"Bu metin php tarafından dinamik olarak yazdırılmıştır." yazısı içerikli bir dosya C:\Deneme.doc konumuna kaydedilecektir.

Şimdi de Excel ile bir veriyi kaydetmeyi göreceğimiz bir bir örneğe bakalım :
# Excel e bağlanmak için
  $yeni_excel = new COM("Excel.Application");

# Yeni bir çalışma kitabı yaratmak için
  $yeni_excel->Workbooks->Add();

# Çalışma kitabının class larını kullanarak yeni bir sheet oluşturmak için
  $kitap=$yeni_excel->Workbooks(1);
  $sheets=$kitap->Worksheets(1);

# Sheets içerisindeki hücreleri kullanmak için
  $hucre = $sheets->Cells(1,1); // A1 hücresini seçili duruma getirdik..
  $hucre->activate;

# Seçili hücreye yazılacak olan yazıyı ve rengini belirleyelim:
  $font=$hucre->Font;
  $font->Color=458751;

  $hucre->value= "Merhaba Dünya";   

# Çalışma kitabını kaydedelim
  $kitap->saveas("C:Deneme.xls");

# Çalışma kitabını kapatıyoruz
  $kitap->Close();
  $yeni_excel->Workbooks->Close();

# Çıkıyoruz:
  $yeni_excel->Quit();
Örnekler zaten yeterince açıklamalı ve basit. Kendinize kolayca uyarlayabilirsiniz. Excel örneği için forumdaki bir konudan faydalandım, soruyu soran ve kendi yanıtını bulan Sezgin Bilketay'a teşekkürler :-)


Hazırlayan : Mehmet Fatih YILDIZ

Yorumlar

17 Mayıs Cumartesi ´08 19:53
teşekkürler bu bilgi için bu kaynağın içine hazır COM nesnesini göstermişken COM PORT bağlantıyıda gösterebilirdin veya kaynak olarak php.org.trden bağlantıda verebilirdin
18 Mayıs Pazar ´08 12:08
ama yapmamışım
Üye Resmi dış cephe
30 Haziran Pazartesi ´08 15:35
teşekürler arkadaşlar..
Üye Resmi ilser
5 Mart Perşembe ´09 09:38
teşekkür ederim
Üye Resmi Kabin
4 Kasım Çarşamba ´09 09:48
nice article, thanks for your share..
Üye Resmi Suvari
18 Aralık Cuma ´09 22:53
Böyle bir hata alıyorum.

Fatal error: Uncaught exception 'com_exception' with message 'Failed to create COM object `Excel.Application': Access is denied. ' in C:\inetpub\wwwroot\Excel.php:4 Stack trace: #0 C:\inetpub\wwwroot\Excel.php(4): com->com('Excel.Applicati...') #1 {main} thrown in C:\inetpub\wwwroot\Excel.php on line 4
Üye Resmi dilek öztürk
4 Şubat Perşembe ´10 11:41
kod parçacığını çalıştırdığımda
Fatal error: Call to undefined method com::saveas() in C:\AppServ\www\word.php on line 6
 hatası  mevcut

 kod örneği ;
   1.<?
   2.$Word = new COM("Word.Application") or die("Word Başlatılamıyor!");
   3.$Word->visible = 0;
   4.$Word->Documents->Add();
   5.$Word->Selection->TypeText("Bu metin php tarafından dinamik olarak yazdırılmıştır.");
  6. $Word->SaveAs("C:Deneme.doc");
  7.$Word->Quit();
  8. ?>
Üye Resmi Bekir Sincer
25 Mart Perşembe ´10 01:51
@dilek öztürk:

6.satırı şu şekilde değiştirirseniz sorun kalmaz:

$Word->Documents[1]->SaveAs("C:\Deneme.doc");
Üye Resmi erhan koçlar
6 Mayıs Perşembe ´10 14:43
ben bunu localhosta kaydetmek istediğimde hata veriyor..

acaba bu sınıf kullanarak saveas urlsini http olarak veremiyormuyuz?
Üye Resmi mustafa
7 Ocak Cuma ´11 18:48
Lİnux üzerinde php ile doc ve docx okuma kılavuzu yazdım, umarım faydalı olur:
http://cookingthecode.com/a45_Php-ile-Word-(doc,-docx)-Belgelerini-Okuma,-Yazma
Üye Resmi marka tescil
26 Ocak Perşembe ´12 13:01
çok teşekkürler
Üye Resmi asya nur
13 Ağustos Pazartesi ´12 00:38
Com nesnesini nasıl yapacaz anlamadım ben olayı

Fatal error: Class 'COM' not found in /home/forms/domains/formdemo.com/public_html/ikbasvuru/ikword.php on line 4

bu hatayı veriyor
Üye Resmi süleyman
7 Mayıs Cumartesi ´16 10:43
( ! ) Fatal error: in C:\wamp\www\proje.php on line 68
( ! ) com_exception: in C:\wamp\www\proje.php on line 68
Call Stack
&#35; Time Memory Function Location
1 0.0000 136496 {main}( ) ..\proje.php:0
Belirtilen yer
$hucre->value= "Merhaba Dünya";
   $kitap->SaveAs["C:Deneme.xls"];
Yeni Yorum *
İletişim Bilgileri
*
*
E-Posta adresiniz gösterilmeyecektir.
(unut)
Güvenlik Kodu *

Gönderiliyor