Generarea de documente Microsoft Word în PHP

Trăim într-o lume în care dezvoltatorii PHP au din timp în timp pentru a interacționa cu sistemul de operare Windows. WMI (Management Interface Windows, Windows Management Interface) - un astfel de exemplu - interacțiunea cu Microsoft Office.

În această lucrare, considerăm o simplă integrare între Word și PHP: a genera un document Microsoft Word pe baza câmpurilor de intrare în HTML formă folosind PHP (și extinderea acestuia Interop).

măsuri pregătitoare

În primul rând, asigurați-vă că am creat un mediu de bază WAMP. Deoarece Interop este prezent doar pe Windows, atunci avem nevoie pentru a face serverul nostru Apache și instalarea PHP este implementat pe o mașină de Windows. Ca atare, am folosi EasyPHP 14.1. care este extrem de ușor de instalat și de configurat.

De asemenea, asigurați-vă că am stabilit biblioteci pentru dezvoltarea de aplicații Interop (PIA, primar Interop adunări, ansamblul principal Interop). Învață-l prin deschiderea Windows Explorer și navigați la \ Adunare. și nu ar trebui să vedem un set de ansambluri fixe:

Generarea de documente Microsoft Word în PHP

Aici puteți vedea elementul Microsoft.Office.Interop.Word (subliniat în captura de ecran). Acesta va fi adunarea, pe care o vom folosi în demonstrația noastră. Vă rugăm să acorde o atenție deosebită domeniului „numele Adunării (nume de asamblare)“, „Version (versiune)“ și „simbol cheie publică (cheie publică jeton).“ Le vom folosi în curând în scenariul nostru PHP.

Acest director conține și alte ansambluri (inclusiv toate familia Office) sunt disponibile pentru a fi utilizate în cadrul programelor sale (nu numai PHP, dar, de asemenea, pentru VB.net, C #, etc).

În cazul în care lista de asamblare nu include întregul pachet Microsoft.Office.Interop. trebuie să fie reinstalați Office, adăugând PIA, sau manual descărcați pachetul de pe site-ul Microsoft și instalați-l. Pentru mai multe instrucțiuni detaliate, consultați această pagină pe MSDN.

Și, în sfârșit, trebuie să activați php_com_dotnet.dll extensia în php.ini și reporniți serverul.

Acum poti merge la programare.

formular HTML

Având în vedere că partea principală a acestui exemplu cade pe partea de server, vom crea o pagină simplă cu o formă care va fi după cum urmează:

Generarea de documente Microsoft Word în PHP

Avem un câmp de text pentru numele unui grup de switch-uri pentru podea, cursorul pentru vârsta, iar zona de introducere a textului pentru a introduce un mesaj, și notorii butonul „Trimite“.

Partea de server

File-handler pe partea de server - acesta este scopul principal al conversației noastre. Pentru a începe, voi da codul complet al acestui fișier, și apoi explicați-l pas cu pas.

După ce am înregistrat în intrările $ variabile valorile obținute din matriță și, de asemenea, a creat un element gol cu ​​cheia printdate (de ce am făcut-o - va discuta mai târziu), ne întoarcem la cele patru linii foarte importante:

Manipulator COM în PHP necesită crearea unei instanțe a unei clase în „adunare.“ În cazul nostru, suntem de lucru cu Word. Dacă te uiți la prima captura de ecran, putem scrie semnătura completă a ansamblului pentru Cuvânt:

Clasa la care dorim să se facă referire la acestea, este întotdeauna numit „imya.sborki“ + „.ApplicationClass“.

Prin stabilirea acestor doi parametri, vom fi capabili de a obține un obiect pentru lucrul cu Word.

Acest obiect poate rămâne în fundal, sau putem traduce în modul operațional setare atribut vizibil la true.

Următorul pas este de a deschide documentul, care necesită tratament, și scrie copie „document“ în variabila $ d.

Pentru a crea un document de conținut bazat pe datele din formular, puteți merge mai multe moduri.

Astfel, ar fi greșit să hard-cod conținutul documentului în PHP, și apoi afișa într-un document Word. Vă recomandăm cu tărie să nu facă acest lucru din următoarele motive:

  1. Ai pierdut flexibilitatea. Orice modificare în fișierul de ieșire va necesita o schimbare în codul PHP.
  2. Acest lucru încalcă separarea controlului și tipul de
  3. Aplicarea stiluri pentru conținutul documentului (aliniere, fonturi, stiluri, etc), în script-ul va crește foarte mult numărul de linii de cod. stiluri de schimbare de software prea greoaie.

O altă opțiune este de a utiliza o căutare și înlocuire. PHP are un bun built-in instrumente pentru acest lucru. Putem crea un document Word, care va plasa eticheta cu separatoare speciale, care au fost ulterior să fie înlocuit. De exemplu, putem crea un document care va conține următorul fragment:

și cu ajutorul PHP, putem înlocui cu ușurință conținutul câmpurilor „Denumire“, obținute din matriță.

Este ușor, și ne salvează de toate consecințele neplăcute cu care ne confruntăm în prima metodă. Trebuie doar pentru a determina delimitator corectă, și în acest caz au fost preparate utilizând un șablon.

Vă recomandăm a treia cale, și se bazează pe o cunoaștere mai profundă a Cuvântului. Ca materiale de umplutură, vom folosi câmpul, și cu ajutorul codului PHP va actualiza valorile direct în câmpurile, valorile corespunzătoare.

Această abordare este flexibil, rapid, și în concordanță cu cele mai bune practici de lucru cu Word. Cu acesta, puteți evita, de asemenea, de căutare full-text în document, care este bun pentru performanță. Rețineți că această soluție are și dezavantaje.

Cuvântul de la început a sprijinit numele de index pentru câmpurile. Chiar dacă am fi specificat numele câmpurilor generate - avem încă nevoie pentru a utiliza ID-urile numerice ale acestor câmpuri. Acest lucru explică, de asemenea, de ce avem nevoie pentru a utiliza o funcție separată (setupfields) pentru a stabili câmpurile corespunzătoare ale indexului și numele câmpului din forma.

In acest tutorial demo, vom utiliza documentul cu 5 câmpuri MERGEFIELD. template-uri document va plasa în același loc și handler-ul nostru script-ul.

Vă rugăm să rețineți că câmpul printdate nu are câmpurile corespunzătoare. De aceea, am adăugat elementul printdate gol în matrice de $ intrări. Fără ea, script-ul va fi disponibil în continuare, dar PHP va emite un avertisment care printdate un index în matrice $ intrări.

După înlocuirea câmpurile cu valori noi, vom imprima documentul utilizând

Metoda are mai mulți parametri de printare opționale și vom folosi forma cea mai simplă de ea. Deci, va imprima o copie a documentului la imprimantă implicită, care este conectat la un calculator Windows.

Puteți apela, de asemenea, PrintPreview. să se uite la rezultatul obținut înainte de a fi tipărite. Într-un mediu complet automatizat, noi, desigur, se va folosi metoda de printare.

Este necesar să se aștepte ceva timp înainte de începerea lucrărilor complet cu Word, astfel încât să ia timp pentru a pune în aplicare o lucrare de imprimare. Fără întârziere (3) metoda de $ g-> Quit se efectuează imediat, iar lucrarea nu este în coada de așteptare.

În cele din urmă, noi numim $ g-> Quit (false). care se închide aplicația Word, care a fost cauzată de script-ul nostru. Singurul parametru a trecut la metoda este instruit pentru a salva fișierul înainte de a ieși. Am făcut modificări în document, dar noi nu vrem să le salvați, pentru că avem nevoie de un șablon de pur pentru prelucrarea ulterioară.

Dupa ce am terminat cu codul, putem încărca pagina noastră de web cu un formular de a marca anumite valori, și trimite-l. Următoarele imagini arată rezultatul script-ul și Cuvântul documentului actualizat:

Generarea de documente Microsoft Word în PHP

Generarea de documente Microsoft Word în PHP

PHP - limbaj slab tastat. COM obiect de tip obiect. In timp ce scriam scenariul nu suntem capabili de a obține o descriere a obiectului, indiferent dacă acesta este aplicația Word, un document sau un câmp. Noi nu știm ce proprietăți au această facilitate, sau ce metode acceptă.

Acest lucru încetini foarte mult în jos viteza de dezvoltare. Pentru a accelera dezvoltarea, aș recomanda mai întâi să scrie funcții în C #, și apoi traduce codul în PHP. Eu pot recomanda un IDE gratuit pentru dezvoltarea în C # numit „#develop“. O puteți găsi aici. Prefer sa Visual Studio, deoarece #develop mai mici, mai simplu și mai rapid.

C # cod de migrare în PHP nu este la fel de înfricoșător pe cât pare. Lasă-mă să-ți arăt o pereche de linii din C #:

Este posibil să observați că codul în C # este foarte similar cu codul PHP pe care le-am arătat mai devreme. C # - un limbaj puternic tipizat, astfel încât să puteți vedea mai multe tipuri de operatori Cast în acest exemplu, precum și necesitatea de a specifica tipul unei variabile.

Odată cu indicarea tipului unei variabile, vă puteți bucura de un cod mai clar și autocompletării și viteza de dezvoltare a îmbunătățit în mod semnificativ.

O altă modalitate de a crește viteza de dezvoltare pe PHP - apel macro în Word. Realizăm aceeași procedură, și după ce păstrează ca un macro. Macro Visual Basic, care este, de asemenea, ușor de tradus în PHP.

Și cel mai important - documentația privind Oficiul PIA de la Microsoft. în special documentația pentru fiecare aplicație namespace Office este materialul de referință cel mai detaliat. Cele mai frecvent utilizate trei aplicații:

concluzie

În acest articol, am arătat cum să populeze un document Word, folosind biblioteci PHP COM și capabilități de interoperabilitate Microsoft Office.

Windows si Office sunt utilizate pe scară largă în viața de zi cu zi. Cunoaște Oficiul / forța de ferestre și PHP va fi util pentru fiecare PHP și dezvoltatorii Windows.

Odată cu extinderea PHP COM vă deschide ușa la utilizarea acestei combinații.

Generarea de documente Microsoft Word în PHP

Prin obținerea de informații de la două canale (vedere si auz) eficacitatea instruirii de învățare departe superioare de cărți. O temele pentru acasă și teste on-line vă va permite să se gândească în mod constant în limba țintă și imediat verifica cunoștințele!

Generarea de documente Microsoft Word în PHP

Generarea de documente Microsoft Word în PHP

Dacă doriți o lungă perioadă de timp pentru a studia modul în HTML, mi-ai, pentru ai vesti bune!

Generarea de documente Microsoft Word în PHP

Dacă ați învățat deja HTML și doresc să avanseze, următorul pas va fi de a studia tehnologia CSS.

Generarea de documente Microsoft Word în PHP

Dacă doriți să înțeleagă conceptele de domeniu si hosting, învață cum să creeze o bază de date, încărca fișiere pe un site web prin intermediul unui server FTP, crea subdomenii, configurați cutiile poștale pentru site-ul și să monitorizeze participarea, acest curs este conceput special pentru tine!