Generează documente word Microsoft pe php

Trăim într-o lume în care dezvoltatorii PHP trebuie să interacționeze din când în când cu sistemul de operare Windows. WMI (Windows Management Interface, Windows Management Interface) este un astfel de exemplu - interacțiunea cu Microsoft Office.







În acest articol, vom analiza o simplă integrare între Word și PHP: generând un document Microsoft Word bazat pe câmpurile de intrare în formularul HTML folosind PHP (și extensia lui Interop).

Pași pregătitori

În primul rând, asigurați-vă că avem mediul de bază WAMP. Din moment ce Interop este prezent doar în Windows, avem nevoie de instalarea serverului nostru Apache și a instalării PHP pe o mașină Windows. În această calitate, folosesc EasyPHP 14.1. care este extrem de ușor de instalat și de configurat.

De asemenea, trebuie să ne asigurăm că avem biblioteci pentru dezvoltarea aplicației Interop (PIA, ansambluri primare interop, colecții de bază Interop). Puteți afla acest lucru deschizând Windows Explorer și accesând directorul \ asamblare. și acolo ar trebui să vedem un set de ansambluri instalate:

Generează documente word Microsoft pe php

Aici puteți vedea elementul Microsoft.Office.Interop.Word (subliniat în captura de ecran). Aceasta va fi adunarea pe care o vom folosi în demonstrația noastră. Acordați o atenție deosebită câmpurilor "Numele ansamblului", "Versiune" și "Simbolul cheii publice". În curând le vom folosi în scriptul nostru PHP.

În acest director există și alte ansambluri (inclusiv întreaga familie de Office) disponibile pentru utilizare în programele lor (nu numai pentru PHP, dar și pentru VB.net, C #, etc.).

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

În cele din urmă, trebuie să activați extensia php_com_dotnet.dll în php.ini și să reporniți serverul.

Acum puteți trece la programare.

Formular HTML

Din moment ce cea mai mare parte a acestui exemplu se află pe partea de server, vom crea o pagină simplă cu un formular care arată astfel:

Generează documente word Microsoft pe php

Avem un câmp de text pentru nume, un grup de comutatoare pentru podea, un cursor pentru vârstă și o zonă de introducere a textului pentru scrierea unui mesaj, precum și un buton "Trimitere" bine cunoscut.

Server parte

Fișierul handler din partea serverului este scopul principal al conversației noastre. Mai întâi, voi da codul complet pentru acest fișier și apoi îl voi explica pas cu pas.

După ce am notat valorile primite din formular în variabilele $ intrări și, de asemenea, am creat un element gol cu ​​cheia printdate (de ce am făcut acest lucru, o vom discuta mai târziu), trecem la patru linii foarte importante:

Ajutorul COM din PHP necesită crearea unei instanțe a clasei în cadrul "ansamblului". În cazul nostru, lucrăm cu Word. Dacă priviți la prima captură de ecran, puteți scrie semnătura completă pentru Word:

Clasa la care ne referim este denumită întotdeauna "collectionname" + ".ApplicationClass".

După ce am setat acești doi parametri, putem obține obiectul să lucreze cu Word.

Acest obiect poate rămâne în fundal sau îl putem pune în modul de lucru prin setarea atributului vizibil la adevărat.

Următorul pas este să deschideți documentul care necesită procesare și să scrieți instanța documentului în variabila $ d.

Pentru a crea conținut bazat pe date dintr-un formular într-un document, puteți merge mai multe moduri.

Cel mai greșit lucru ar fi acela de a codifica conținutul unui document în PHP și apoi să-l trimiteți la un document Word. Vă recomandăm cu insistență să nu faceți acest lucru din următoarele motive:

  1. Pierzi flexibilitate. Orice modificare a fișierului de ieșire va necesita modificarea codului PHP.
  2. Acest lucru încalcă separarea controlului și a tipului
  3. Aplicarea de stiluri la conținutul documentului (aliniere, fonturi, stiluri etc.) din script va crește considerabil numărul de linii de cod. Modelele care schimbă programele sunt prea greoaie.

O altă opțiune ar fi utilizarea căutării și înlocuirea acesteia. PHP dispune de instrumente bune pentru acest lucru. Putem crea un document Word, în care plasăm etichete cu delimitatori specifici, care vor fi înlocuiți mai târziu. De exemplu, putem crea un document care va conține următorul fragment:







iar cu PHP îl putem înlocui ușor cu conținutul câmpului "Nume" primit din formular.

Este simplu și ne eliberează de toate consecințele neplăcute pe care le întâlnim în prima metodă. Trebuie doar să decidem cu privire la delimitatorul corect și, în acest caz, se pare că vom folosi șablonul.

Vă recomandăm a treia metodă și se bazează pe o cunoaștere mai aprofundată a Cuvântului. În calitate de substituenți, vom folosi câmpuri, iar cu codul PHP vom actualiza direct valorile din câmpurile cu valorile corespunzătoare.

Această abordare este flexibilă, rapidă și este în concordanță cu cele mai bune practici de lucru cu Word. Cu aceasta, puteți evita, de asemenea, căutarea full-text în document, ceea ce este bun pentru performanță. Observ că această soluție are și dezavantaje.

Cuvântul de la început nu a susținut indicii nominali pentru câmpuri. Chiar dacă am specificat numele câmpurilor care urmează să fie create, trebuie încă să utilizăm identificatorii numerici ai acestor câmpuri. De asemenea, acest lucru explică de ce trebuie să folosim o funcție separată (setupfields) pentru a specifica corespondența dintre indexul de câmp și numele câmpului din formular.

În această lecție demo vom folosi un document cu 5 câmpuri MERGEFIELD. Documentul de șablon va fi plasat în același loc ca și scriptul nostru.

Rețineți că câmpul printdate nu conține un câmp corespunzător în formular. De aceea am adăugat un element de imprimare gol în matricea $ inputs. Fără aceasta, scriptul va funcționa și va funcționa, dar PHP va emite un avertisment că indicele printdate nu se află în matricea de intrare $.

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

Metoda PrintOut ia mai mulți parametri opționali și folosim cel mai simplu formular. Aceasta va imprima o copie a documentului pe imprimanta implicită care este atașată la mașina Windows.

De asemenea, puteți apela PrintPreview. să se uite la rezultatul obținut înainte de imprimare. Într-un mediu complet automat, bineînțeles, vom folosi metoda PrintOut.

Trebuie să așteptați un timp înainte să terminați lucrul cu aplicația Word, deci aveți nevoie de timp pentru a pune o lucrare de imprimare în coada de așteptare. Fără întârziere (3), metoda $ w-> Quit este executată imediat, iar lucrarea nu este în așteptare.

În cele din urmă, sunăm $ w-> Quit (false). care închide aplicația Word, care a fost cauzată de scenariul nostru. Singurul parametru trecut la metoda este de a salva fișierul înainte de a ieși. Am făcut editări în document, dar nu vrem să le salvăm, pentru că avem nevoie de un șablon curat pentru lucrarea ulterioară.

După ce terminăm cu codul, putem încărca pagina noastră cu formularul, notați câteva valori și trimiteți-o. Imaginile de mai jos arată rezultatul scriptului, precum și documentul Word actualizat:

Generează documente word Microsoft pe php

Generează documente word Microsoft pe php

PHP este un limbaj slab tastat. Un obiect COM de tipul Object. În timp ce scriem scriptul, nu putem obține o descriere a obiectului, fie că este vorba de o aplicație Word, de un document sau de un câmp. Nu știm ce proprietăți are acest obiect sau ce metode îl suportă.

Acest lucru va încetini foarte mult viteza de dezvoltare. Pentru a accelera dezvoltarea, aș recomanda scrierea funcțiilor mai întâi în C #, și după traducerea codului în PHP. Pot să recomand un IDE gratuit pentru dezvoltare în C # numit "#develop". O puteți găsi aici. Îl prefer cu Visual Studio, deoarece #develop este mai mic, mai simplu și mai rapid.

Migrarea codului C # la PHP nu este la fel de rău cum pare. Permiteți-mi să vă arăt câteva linii în C #:

Puteți vedea că codul din C # este foarte asemănător cu codul PHP pe care l-am arătat mai devreme. C # este un limbaj puternic tipizat, deci în acest exemplu puteți vedea mai mulți operatori de distribuție, iar variabilele trebuie să specifice un tip.

Cu tipul de variabilă, vă puteți bucura de un cod mai ușor de înțeles și de auto-finalizare, iar viteza de dezvoltare este semnificativ îmbunătățită.

Un alt mod de a crește viteza de dezvoltare în PHP este să apelați o macrocomandă în Word. Realizăm aceeași succesiune de acțiuni și apoi salvăm-o ca macro. Macro este scris în Visual Basic, care este, de asemenea, pur și simplu tradus în PHP.

Și, cel mai important, documentația Office PIA de la Microsoft. în special documentația pentru spațiile de nume ale fiecărei aplicații Office este cel mai detaliat material de referință. Cele mai frecvent utilizate trei aplicații sunt:

concluzie

În acest articol am arătat cum să completați un document Word cu biblioteci PHP COM și interoperabilitatea Microsoft Office.

Windows și Office sunt utilizate pe scară largă în viața de zi cu zi. Cunoaște puterea Office / Window și PHP va fi utilă pentru fiecare dezvoltator PHP și Windows.

Cu ajutorul extensiei PHP COM, deschideți ușa pentru a utiliza această combinație.

Generează documente word Microsoft pe php

Prin obținerea de informații imediat prin două canale (vedere și auz), eficiența predării este mult mai mare decât învățarea din cărți. Și temele și testele online vă vor permite să gândiți în mod constant în limba pe care o învățați și să vă verificați imediat cunoștințele!

Generează documente word Microsoft pe php

Generează documente word Microsoft pe php

Dacă doriți să învățați HTML mult timp, atunci am o veste bună pentru dvs.!

Generează documente word Microsoft pe php

Dacă ați învățat deja HTML și doriți să treceți mai departe, următorul pas este să învățați tehnologia CSS.

Generează documente word Microsoft pe 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!







Articole similare

Trimiteți-le prietenilor: