Mikroszkóp-dokumentumok generálása php-n
Olyan világban élünk, ahol a PHP fejlesztőknek időről időre interakcióba kell lépniük a Windows operációs rendszerrel. A WMI (Windows Management Interface, Windows Management Interface) egy ilyen példa - a Microsoft Office-szal való interakció.
Ebben a cikkben megvizsgáljuk a Word és a PHP közötti egyszerű integrációt: a PHP formátumú (és Interop kiterjesztésű) HTML-formátumú beviteli mezőkből származó Microsoft Word-dokumentum létrehozása.
Előkészítő lépések
Először is győződjön meg róla, hogy az alapkörnyezet WAMP. Mivel az Interop csak Windows-ban van jelen, szükségünk van Apache szerverünkre és a PHP telepítésre egy Windows gépen. Ilyenkor az EasyPHP 14.1-et használom. amely rendkívül könnyen telepíthető és konfigurálható.
Azt is meg kell győződnünk arról, hogy vannak könyvtárak az Interop alkalmazás fejlesztéséhez (PIA, Primary Interop Assemblies, Basic Interop Collections). Megtudhatja ezt a Windows Intéző megnyitásával és a könyvtárba való lépéshez
Itt láthatja a Microsoft.Office.Interop.Word elemet (a képernyőképen aláhúzva). Ez lesz az a gyülekezet, amelyet a mi demonstráción fogunk használni. Különös figyelmet kell fordítani a "Assembly name", a "Version" és a "Public key token" mezőkre. Hamarosan használjuk őket PHP szkriptünkben.
Ebben a könyvtárban vannak más szervezetek (beleértve az Office teljes családját), amelyek programjaikban használhatók (nemcsak a PHP, hanem a VB.net, a C # stb.) Számára is.
Ha a szerelési lista nem tartalmazza a teljes Microsoft.Office.Interop csomagot. akkor újra kell telepítenünk az Office-t a PIA hozzáadásával, vagy kézzel kell letöltenünk a csomagot a Microsoft webhelyéről és telepítenünk kell. További részletekért lásd az MSDN oldalon.
Végül engedélyeznie kell a php_com_dotnet.dll kiterjesztést a php.ini fájlban és indítsa újra a kiszolgálót.
Most folytathatja a programozást.
HTML formában
Mivel a példa nagy része a kiszolgáló oldalán található, létrehozunk egy egyszerű oldalt, amely így néz ki:
Van egy szövegmező a névhez, a padlóhoz tartozó kapcsolók csoportja, a csúszka az életkorhoz, valamint szöveges beviteli terület az üzenetek beírásához, valamint egy jól ismert "Küldés" gomb.
Szerver rész
A kiszolgálói oldal kezelő fájlja a beszélgetésünk fő célja. Először megadom a fájl teljes kódját, majd lépésről lépésre megmagyarázom.
Miután leírtuk az űrlapról kapott értékeket a $ bemenet változóba, és létrehoztunk egy üres elemet a printdate billentyűvel (miért tettük ezt, később tárgyaljuk), négy nagyon fontos vonalon haladunk:
A PHP-ben található COM-segédprogram megköveteli, hogy létrehozza az osztály egy példányát a "gyülekezés" alatt. A mi esetünkben a Word-sel dolgozunk. Ha megnézed az első screenshotot, írhatod a Word teljes felépítési aláírását:
Az osztály, amelyre utalni akarunk, mindig a "gyűjtemény neve" + ".ApplicationClass".
Miután meghatároztuk ezt a két paramétert, megkaphatjuk az objektumot a Word-sel.
Ez az objektum a háttérben maradhat, vagy működési módba helyezhetjük úgy, hogy a látható attribútumot igazra állítjuk.
A következő lépés az, hogy megnyitja a feldolgozni kívánt dokumentumot, és írja be a "dokumentum" példányát a $ d változóba.
Ha egy dokumentum űrlapján lévő adatok alapján szeretné létrehozni a tartalmat, többféleképpen is meg lehet menni.
A legféltelenebb dolog az lenne, ha egy dokumentum tartalmát keményen kódolnák a PHP-ben, majd kiadnák egy Word dokumentumba. Erősen ajánlom, hogy ezt ne tegye meg a következő okok miatt:
- Ön elveszíti a rugalmasságot. A kimeneti fájlban bekövetkezett változásoknak meg kell változtatniuk a PHP kódot.
- Ez sérti a vezérlés és a típus szétválasztását
- Ha a stílus tartalmát a dokumentum tartalmára (igazítás, betűtípusok, stílusok stb.) Alkalmazza, nagyban növeli a kódsorok számát. A programmatikusan változó stílusok túl nehézkesek.
Egy másik lehetőség a keresés és a csere. A PHP-nek jó beépített eszközei vannak ehhez. Létrehozhatunk egy Word-dokumentumot, amelyben különleges határolókkal ellátott címkéket helyezünk el, amelyeket később kicserélünk. Például létrehozhatunk egy dokumentumot, amely a következő részletet tartalmazza:
és PHP-vel könnyen helyettesíthetjük az űrlapon kapott "Név" mező tartalmával.
Ez egyszerű, és felszabadít bennünket minden olyan kellemetlen következményről, amelyekkel találkozunk az első módszerben. Csak el kell dönteni a helyes határolóról, és ebben az esetben mi, kiderül, használjuk a sablont.
A harmadik módszert javaslom, és a Word mélyebb ismeretein alapul. Helyekként mezőket használunk, és a PHP kóddal közvetlenül frissítjük a mezők értékeit a megfelelő értékekkel.
Ez a megközelítés rugalmas, gyors, és összhangban áll a Word alkalmazással kapcsolatos legjobb gyakorlataival. Ezzel elkerülheti a teljes szöveges keresést a dokumentumban, ami jó a teljesítményhez. Megjegyzem, hogy ez a megoldás hátrányai is vannak.
A kezdetektől fogva a szó nem támogatta a mezők névleges indexeit. Még ha meg is határoztuk a létrehozandó mezők nevét, akkor is szükségünk van ezeknek a mezőknek a numerikus azonosítására. Ez azt is megmagyarázza, hogy miért kell egy külön függvényt (setupfields) használni ahhoz, hogy meghatározzuk a mezõ index és a mezõ nevét a nyomtatványon.
Ebben a demo leckében egy olyan dokumentumot fogunk használni, amely 5 MERGEFIELD mezővel rendelkezik. A sablondokumentum ugyanabban a helyiségben lesz elhelyezve, mint a forgatókönyv-kezelőnk.
Kérjük, vegye figyelembe, hogy a mezőnyomtatványnak nincs megfelelő mezője az űrlapon. Ezért adtunk egy üres printdate elemet a $ bemenet tömbhöz. Ennek hiányában a szkript továbbra is fut és működik, de a PHP figyelmeztet arra, hogy a printdate index nem szerepel a $ inputs tömbben.
Miután a mezőket új értékekkel helyettesíti, a dokumentumot kinyomtatjuk
A PrintOut módszer több opcionális paramétert is tartalmaz, és a legegyszerűbb formát használjuk. Ezzel a dokumentum egy példányát a Windows géphez csatlakoztatott alapértelmezett nyomtatóra nyomtatja ki.
A PrintPreview-ot is hívhatja. hogy megnézze a nyomtatás előtt nyert eredményt. Teljesen automatikus környezetben természetesen a PrintOut módszert használjuk.
Meg kell várnia egy ideig, mielőtt befejezte a Word alkalmazás használatát, ezért időre van szüksége ahhoz, hogy nyomtatási feladatot állítson be a sorban. Haladéktalanul (3) a $ w-> Quit módszer azonnal végrehajtásra kerül, és a feladat nem várakozik.
Végül hívjuk $ w-> Quit (false) -et. amely bezárja a Word-alkalmazást, amelyet a forgatókönyvünk okozott. Az egyetlen paraméter, amelyet átadnak a módszernek, a fájl mentése a mentés előtt. Szerkesztéseket készítettünk a dokumentumban, de nem szeretnénk megmenteni őket, mert egy tiszta sablon szükséges a későbbi munkákhoz.
Miután befejeztük a kódot, feltölthetjük oldalunkat az űrlappal, értékelhetünk bizonyos értékeket, és elküldhetjük. Az alábbi képek a szkript eredményét, valamint a frissített Word dokumentumot mutatják:
A PHP egy gyengén gépelt nyelv. Objektum típusa COM objektum. A szkript írása közben nem tudunk leírni az objektumot, függetlenül attól, hogy ez egy Word alkalmazás, egy dokumentum vagy egy mező. Nem tudjuk, milyen tulajdonságokkal rendelkezik ez az objektum, vagy milyen módszereket támogat.
Ez nagymértékben lassítja a fejlesztési sebességet. A fejlesztés gyorsítása érdekében javaslom a C # -es írási funkciókat, majd a kód PHP-be fordítását. Tudok ajánlani egy ingyenes IDE fejlesztést a C # nevű "#develop". Megtalálhatja itt. Jobban kedvelem a Visual Studio-hez, hiszen a #develop kisebb, egyszerűbb és gyorsabb.
A C # kód átállítása a PHP-be nem olyan rossz, mint amilyennek látszik. Hadd mutassak meg néhány sort C #-ban:
Láthatja, hogy a C # kód nagyon hasonlít a korábban megmutatott PHP kódra. A C # egy erősen beírt nyelv, tehát ebben a példában több öntött operátor látható, és a változóknak egy típust kell megadniuk.
A változó típusával könnyebben élvezheti a kódot és az automatikus befejezést, és a fejlesztési sebesség jelentősen javul.
Egy másik módja annak, hogy növeljék a fejlesztés sebességét a PHP-ben, hogy makrót hívjunk a Word-ben. Ugyanazt a műveletsort végezzük el, majd mentjük makróként. A makrót a Visual Basic tartalmazza, amely egyszerűen PHP-be is fordul.
És ami a legfontosabb, az Office PIA dokumentációja a Microsofttól. különösen az egyes Office alkalmazások névterekhez tartozó dokumentáció a legrészletesebb referenciaanyag. A leggyakrabban használt három alkalmazás:
következtetés
Ebben a cikkben megmutattuk, miként tölthetjük ki a Word dokumentumot a PHP COM könyvtárakkal és a Microsoft Office interoperabilitással.
A Windows és az Office széles körben használatos a mindennapi életben. Ismerje meg az Office / Window és a PHP hatalmát minden PHP és Windows fejlesztő számára.
A PHP COM bővítmény segítségével kinyitja az ajtót a kombináció használatához.
Az információk azonnali megszerzésére két csatorna (látás és hallás) révén a tanítás hatékonysága sokkal nagyobb, mint a könyvek tanulása. És a házi feladatok és az online tesztek lehetővé teszik, hogy folyamatosan gondolkodj a tanult nyelvben, és azonnal ellenőrizd a tudását!
Ha sokáig szeretné megtanulni a HTML-t, akkor remek hírekkel szolgálok neked!
Ha már megtanulta a HTML-t, és tovább akar lépni, a következő lépés a CSS-technológia megtanulása.
Ha azt szeretnénk, hogy megértsék a fogalmak domain és tárhely, megtanulják, hogyan kell létrehozni egy adatbázist, feltölteni a fájlokat a honlapon keresztül FTP szerver, hozzon létre aldomain konfigurálja a postaládákat a helyszínen, és ellenőrzi a részvétel, a tanfolyam kifejezetten az Ön számára!