|
| Makaleler |
| Toplam Makale |
3330 |
| Yayında |
3150 |
| Bekleyenler |
180 |
| Görüntüleme |
13322189 |
|
|
|
|
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:-
- <?php
-
- $word = new COM("word.application") or die("Word baslatilamiyor");
- print "Word uygulamasi basarili sekilde yuklendi,Bu bilgisayardaki word versiyonu
- {$word->Version}\n";
-
- $word->visible = 0;
- $word->Documents->Add();
- $word->Selection->TypeText("Test yapiliyor,Bu bir test mesajidir... 1,2,3");
- $Documents[1]->SaveAs("ornek_dosya.doc");
- $word->Quit();
- ?>
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:-
- <?php
-
- require("DB.php");
-
- $excel_baglantisi = new COM("excel.application");
- $excel_baglantisi->Visible = false;
-
- $CalismaKitabi = $excel_baglantisi->workbooks->add();
- $CalismaKitabi->Cells(1,1)->value = "Isim";
- $CalismaKitabi->Cells(1,2)->value = "Ucret";
- $CalismaKitabi->Cells(1,3)->value = "Calisma Suresi";
-
- $dbh = new DB;
-
- $dbh->connect("mssql://kullaniciadim:sifrem@localhost/calisanraporlari");
- $sth = $dbh->query("SELECT * FROM calisanisimleri WHERE ucret='ucret'");
-
- $idx = 2;
- while ($satir = $dbh->fetchRow($sth, DB_GETMODE_ASSOC)) {
- $CalismaKitabi->Cells(idx, 1)->value = $satir["isim"];
- $CalismaKitabi->Cells(idx, 2)->value = $satir["Ucret"];
- $CalismaKitabi->Cells(idx, 3)->value = $satir["CS"];
- }
-
- $dbh->disconnect();
- $CalismaKitabi->SaveAs("cal_raporlari-$ucret.xls");
- $excel_baglantisi->quit();
- ?>
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:-
- <%
- Dim excel_baglantisi, calisma_kitabi, DosyaAdi 'XLS dosyasi ile ilgili ayrintilar
- Dim dbh, sth, stmt 'Veritabani ile ilgili
- Dim i, x 'Dongulerle ilgili
- Dim Ucret 'Kullanicin girecegi girdi degiskeni
-
- set ucret = request.queryString("ucret")
-
- set excel_baglantisi = server.createObject("excel.application") 'COM Nesnesi
- excel_baglantisi.visible = False
- excel_baglantisi.workbooks.Add
- set calisma_kitabi = excel_baglantisi.Worksheets(1) 'VERITABANI BAGLANTISINI BASLAT VE VERIYI EKLE
-
- set dbh = server.createObject("ADODB.Connection")
- dbh.Open "DSN=calisanraporlari;uid=kullaniciadim;pwd=sifrem"
- set stmt = "SELECT * FROM calisanisimleri WHERE ucret='"
- stmt = stmt & Ucret & "'"
-
- set x=2 For i=0 to sth.eof
-
- Worksheet.Cells(x,1) = sth(i).isim Worksheet.Cells(x,2) = sth(i).ucret
- Worksheet.Cells(x++,3) = sth(i).CS sth.movenext next
-
- dbh.close
-
- calisma_kitabi.SaveAs "cal_raporlari-" & Ucret & ".xls" excel_baglantisi.quit
-
- set calisma_kitabi = Nothing
- set excel_baglantisi = Nothing
- %>
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.
Eklenme tarihi: 3-2-2006 Okunma: 4888
|
| Bu Makaleye Verilen Puan: |
|
Kullanıcı Yorumları
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
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");
İlgili Dökümanlar
|
|
|