PHP’de Excel ve Word Gibi Programlara Bağlanmak

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
$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
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; //Burada mssql veritabanina baglaniyoruz.
$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"];//Calisma Suresi 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 uygulam problemsiz caliscaktir. Veya hangi veritabani class’ini kullaniyrosaniz onu ekleyin.Sonucta bu tamamen size kalmis.

Be the first to comment

Leave a Reply

Your email address will not be published.


*