Anasayfa > Programlama > PHP > PHP ile Excel ve Word gibi programlara baglanmak?
Makaleye verilen puanlar Makaleye verilen puanlar Makaleye verilen puanlar

PHP ile Excel ve Word gibi programlara baglanmak?




Problem : ASP'de oldugu gibi COM nesneleri kullanarak Microsoft
Excel,Word gibi programlarin avantajlarindan yararlanmak istiyorsunuz.
Cozum: PHP4 ile beraber ASP'de oldugu gibi onceden hazirlanmis COM objelerini
programlarimiz icinde argumentler yardimiyla kullanabiliyoruz.

Bir ornek vermek gerekirse:

PHP:

  1.  
  2. <?php 
  3.  
  4. $word = new COM("word.application") or die("Word baslatilamiyor");
  5. print "Word uygulamasi basarili sekilde yuklendi,Bu bilgisayardaki word versiyonu
  6. {$word->Version}\n";
  7.  
  8. $word->visible = 0;
  9. $word->Documents->Add();
  10. $word->Selection->TypeText("Test yapiliyor,Bu bir test mesajidir... 1,2,3");
  11. $Documents[1]->SaveAs("ornek_dosya.doc");
  12. $word->Quit();
  13. ?>


Tartisma : Cok uzun bir sure ASP'nin programcilara verdigi bu cok guclu ozellik
ile cok fazla programlama bilmeden guclu web uygulamalarinin yaratilmasi
saglandi.Bu sekilde C,C++ veya Visual Basic ile uygulamalar yazip bunlari ASP
arayuzu ile web ortamina aktarmak mumkun oluyordu.Simdi PHP de bu ozelligi
desteklemektedir.

Aslinda ASP kullanmak icin hic bir neden yoktur.Birazdan sizlere durumun ne
boyutta oldugunu gosterecegiz ve karari size birakacagiz.PHP ile gelen kolayliklar
simdiye kadar hic bir dilde olmadigi kadar gelismistir.

Simdi de biraz daha gelismis bir uygulama yapalim ve ayni kodun birde ASP deki
yazilimina bakalim.

Bu ornegimiz de Excel ve Mssql programlarini kullanarak bir uygulama
yaratacagiz.Anlatimda kolaylik olmasi acisinda veritabani modulunu(class veya
sinif olarak tabir ediliyor.) uygulamaya "require ()" komutunu kullanarak
eklyecegim.Boylece cok fazla karisikliga yol acmadan anlatmak istedigimizi
anlatmis olacagiz.

Zannedersem bir problem olmadan anlayacaksiniz...Bu sinifi veya dahja gelismis
veritabani siniflarini internetten kolayca bulabilirsiniz.Sonucta konumuz COM
objelerini kullanarak Excel,Word gibi uygulamalara baglanmak.

Kodlarimizi yazmaya baslayalim,

PHP:

  1.  
  2. <?php 
  3.  
  4. require("DB.php");
  5.  
  6. $excel_baglantisi = new COM("excel.application");
  7. $excel_baglantisi->Visible = false;
  8.  
  9. $CalismaKitabi = $excel_baglantisi->workbooks->add();
  10. $CalismaKitabi->Cells(1,1)->value = "Isim";
  11. $CalismaKitabi->Cells(1,2)->value = "Ucret";
  12. $CalismaKitabi->Cells(1,3)->value = "Calisma Suresi";
  13.  
  14. $dbh = new DB; //Burada mssql veritabanina baglaniyoruz.
  15.  
  16. $dbh->connect("mssql://kullaniciadim:sifrem@localhost/calisanraporlari");
  17. $sth = $dbh->query("SELECT * FROM calisanisimleri WHERE ucret='ucret'");
  18.  
  19. $idx = 2;
  20. while ($satir = $dbh->fetchRow($sth, DB_GETMODE_ASSOC)) {
  21. $CalismaKitabi->Cells(idx, 1)->value = $satir["isim"];
  22. $CalismaKitabi->Cells(idx, 2)->value = $satir["Ucret"];
  23. $CalismaKitabi->Cells(idx, 3)->value = $satir["CS"];//Calisma Suresi CS
  24. }
  25.  
  26. $dbh->disconnect();
  27. $CalismaKitabi->SaveAs("cal_raporlari-$ucret.xls");
  28. $excel_baglantisi->quit();
  29. ?>

Tekrar ediyorum burada "DB.php" dosyasi programimiza en basta goreceginiz gibi
"require()" komutuyla birlestirildi.Bu class dosyasini uygulamanizi kayit ettiginiz
klasore yerlestirmeniz halinde uygulama problemsiz calisacaktir. Veya hangi
veritabani class'ini kullaniyrosaniz onu ekleyin.Sonucta bu tamamen size kalmis.

Evet buraya kadar herhalde anlasilmayan bir sey yok.Simdide ornek olmasi ve
size fikir vermesi acisindan bu uygulamanin ASP versiyonunu yazalim.

KOD:

  1.  
  2. <%
  3. Dim excel_baglantisi, calisma_kitabi, DosyaAdi 'XLS dosyasi ile ilgili ayrintilar
  4. Dim dbh, sth, stmt 'Veritabani ile ilgili 
  5. Dim i, x 'Dongulerle ilgili 
  6. Dim Ucret 'Kullanicin girecegi girdi degiskeni
  7.  
  8. set ucret = request.queryString("ucret")
  9.  
  10. set excel_baglantisi = server.createObject("excel.application") 'COM Nesnesi
  11. excel_baglantisi.visible = False 
  12. excel_baglantisi.workbooks.Add 
  13. set calisma_kitabi = excel_baglantisi.Worksheets(1) 'VERITABANI BAGLANTISINI BASLAT VE VERIYI EKLE
  14.  
  15. set dbh = server.createObject("ADODB.Connection")
  16. dbh.Open "DSN=calisanraporlari;uid=kullaniciadim;pwd=sifrem" 
  17. set stmt = "SELECT * FROM calisanisimleri WHERE ucret='" 
  18. stmt = stmt & Ucret & "'"
  19.  
  20. set x=2 For i=0 to sth.eof
  21.  
  22. Worksheet.Cells(x,1) = sth(i).isim Worksheet.Cells(x,2) = sth(i).ucret
  23. Worksheet.Cells(x++,3) = sth(i).CS sth.movenext next
  24.  
  25. dbh.close
  26.  
  27. calisma_kitabi.SaveAs "cal_raporlari-" & Ucret & ".xls" excel_baglantisi.quit
  28.  
  29. set calisma_kitabi = Nothing 
  30. set excel_baglantisi = Nothing 
  31. %>


Karar Sizin :)

Bu konu hakkindaki butun gorus ve sorularinizi asagidaki mail adresime
gonderebilirsiniz.

Saglicakla kalin,

Serkan Hadi Ceylani
serkan@turk-php.com


Bu makale hakkında ek bilgi eklemek için buraya tıklayınız

Bu makalenin yazar yada kaynağını bildirmek için tıklayınız.

Digg this Post! Add Post to del.icio.us Bookmark Post in Technorati Furl this Post!
Eklenme tarihi: 3-2-2006  Okunma: 4888

Bu Makaleye Verilen Puan:    Makaleye verilen puanlar Makaleye verilen puanlar Makaleye verilen puanlar
Bu Makaleye Puan Ver  

Bölüm Başlık Kullanıcı Yorumları


Reşit Özkan Reşit Özkan

Fatal eror  Tarih: 24-12-2006 2:01am

Fatal error: Call to a member function SaveAs() on a non-object in C:\Program Files\xampp\htdocs\dene\Page.php on line 134

hatası veriyor. SaveAs() anlamıyor Ne yapmalıyız ?
Selamlar

oguz oguz

Tarih: 2-8-2007 10:14am

SaveAs Bende de çalışmıyor.

Fatal error: Uncaught exception 'com_exception' with message 'Source: Microsoft Office Excel
Description: Unable to get the SaveAs property of the Workbook class' in C:\ProjeV2\export_invoices.php:88 Stack trace: #0 C:\ProjeV2\export_invoices.php(88): variant->SaveAs('incoming_invoic...') #1 {main} thrown in C:\ProjeV2\export_invoices.php on line 88

Satır 88: $WorkBook->SaveAs("incoming_invoices.xls");

Reklam Netinternet
Bazı hakları saklıdır: İçeriğin editör ve yazarlarımız tarafından oluşturulan kısımları ve site tasarımının hakkı saklıdır.  Bu sayfa en iyi 1280x1024 ve 1024x768 çözünürlükte izlenir.
Powered by BilgiPortal v2.2
Emlak Yorumlar Müzik estetik