Trăim într-o lume în care dezvoltatorii PHP trebuie să interacționeze sistem de operare Windows. WMI (Interfață de administrare Windows) Comenzi Windows) - un astfel de exemplu este interacțiunea cu Microsoft Office.

În acest articol, ne vom uita la o integrare simplă între Word și PHP: generarea unui document Microsoft Word pe baza câmpurilor de intrare într-un formular HTML folosind PHP (și extensia sa Interop).

Etape pregătitoare

În primul rând, să ne asigurăm că avem un mediu WAMP de bază configurat. Întrucât Interop este prezent doar pe Windows, avem nevoie de sistemul nostru server Apacheși instalarea PHP au fost implementate mașină Windows. Ca atare, folosesc EasyPHP 14.1, care este extrem de ușor de instalat și configurat.

Următorul pas este să instalați Microsoft Office. Varianta nu este foarte importantă. Folosesc Microsoft Office 2013 Pro, dar orice versiune de Office mai veche decât 2007 ar trebui să funcționeze.

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

Aici puteți vedea elementul Microsoft.Office.Interop.Word (subliniat în captură de ecran). Aceasta va fi versiunea pe care o vom folosi în demonstrația noastră. Vă rugăm să acordați o atenție deosebită câmpurilor „Nume ansamblu”, „Versiune” și „Jeton cheie publică”. Le vom folosi în curând în scriptul nostru PHP.

Acest director conține și alte ansambluri (inclusiv întreaga familie Office) disponibile pentru utilizare în programele lor (nu numai pentru PHP, ci și pentru VB.net, C# etc.).

Dacă lista de ansambluri nu include întregul pachet Microsoft.Office.Interop, atunci trebuie fie să reinstalăm Office prin adăugarea PIA, fie să descarcăm manual pachetul de pe site-ul Microsoft și să îl instalăm. Consultați această pagină MSDN pentru instrucțiuni mai detaliate.

cometariu Notă: Doar distribuția PIA Microsoft Office 2010 este disponibilă pentru descărcare și instalare. Versiunea de asamblare din acest pachet este 14.0.0, iar versiunea 15 vine numai cu Office 2013.

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

Acum putem trece la programare.

formular HTML

Deoarece partea principală a acestui exemplu se află pe partea serverului, vom crea o pagină simplă cu un formular care va arăta astfel:

Avem un câmp de text pentru nume, un grup de butoane radio pentru sex, un glisor pentru vârstă și o zonă de introducere a textului pentru introducerea unui mesaj, precum și infamul buton „Trimite”.

Salvați acest fișier ca „index.html” în directorul gazdei virtuale, astfel încât să poată fi accesat la o adresă URL precum http://test/test/interop .

Partea serverului

Fișierul handler de pe partea serverului este scopul principal al conversației noastre. În primul rând, voi da codul complet pentru acest fișier, apoi îl voi explica pas cu pas.

vizibil = adevărat; $fn = __DIR__ . „\\template.docx”; $d = $w->Documente->Open($fn); echo „Documentul este deschis.


"; $flds = $d->Fields; $count = $flds->Count; echo "Documentul are $count câmpuri.
"; ecou"
    "; $mapping = setupfields(); foreach ($flds ca $index => $f) ( $f->Select(); $key = $mapping[$index]; $value = $inputs[$key]; dacă ($cheie == „sex”) ( dacă ($valoare == „(!LANG:m") $value = "Domnul."; else $value = "Domnișoară"; } if($key=="printdate") $value= date ("Y-m-d H:i:s"); $w->Selection->TypeText($value); echo "!}
  • Atribuirea $index: $key la $value
  • ";) ecou"
"; echo "Procesare finalizată!

"; echo "Se imprimă, așteptați...
"; $d->PrintOut(); sleep(3); echo „Terminat!”; $w->Quit(fals); $w=null; funcția setupfields() ($mapping = array(); $mapping = "gen"; $mapping = "nume"; $mapping = "varsta"; $mapping = "msg"; $mapping = "printdate"; return $mapping; )

După ce am scris valorile primite din formular în variabila $inputs și am creat și un element gol cu ​​cheia printdate (de ce am făcut asta - vom discuta mai târziu), trecem la patru rânduri foarte importante:

$assembly = "Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"; $class = "Microsoft.Office.Interop.Word.ApplicationClass"; $w = DOTNET nou ($asamblare, $clasa); $w->vizibil = adevărat;

Manipulatorul COM al PHP necesită ca clasa să fie instanțiată în „asamblare”. În cazul nostru, lucrăm cu Word. Dacă vă uitați la prima captură de ecran, puteți nota semnătura completă a ansamblului pentru Word:

  • „Nume”, „Versiune”, „Public Key Token” sunt toate preluate din informații care pot fi vizualizate în „c:\Windows\assembly“.
  • „Cultura” este întotdeauna neutră

Clasa la care vrem să ne referim este întotdeauna numită „nume ansamblu” + „.ApplicationClass”.

Prin setarea acestor doi parametri, putem face ca un obiect să lucreze cu Word.

Acest obiect poate rămâne în fundal sau îl putem aduce în producție setând atributul vizibil la true .

Următorul pas este să deschideți documentul care urmează să fie procesat și să scrieți o instanță a „documentului” la variabila $d .

Există mai multe moduri de a crea conținut bazat pe formular într-un document.

Cel mai rău lucru de făcut ar fi să codificați conținutul documentului în PHP și apoi să îl scoateți într-un document Word. Recomand cu tărie să nu faceți acest lucru din următoarele motive:

  1. Pierzi flexibilitatea. Orice modificare a fișierului de ieșire va necesita modificări ale codului PHP.
  2. Acest lucru rupe separația dintre control și vedere
  3. Aplicarea stilurilor la conținutul documentului (aliniere, fonturi, stiluri etc.) într-un script va crește foarte mult numărul de linii de cod. Schimbarea stilurilor în mod programatic este prea greoaie.

O altă opțiune ar fi să folosiți găsirea și înlocuirea. PHP are instrumente bune încorporate pentru aceasta. Putem crea un document Word în care punem etichete cu separatoare speciale, care ulterior vor fi înlocuite. De exemplu, putem crea un document care va conține următorul fragment:

iar cu ajutorul PHP-ului îl putem înlocui cu ușurință cu conținutul câmpului „Nume” primit din formular.

Acest lucru este simplu și ne salvează de toate consecințele neplăcute cu care ne confruntăm în prima metodă. Trebuie doar să decidem asupra delimitatorului corect, caz în care ajungem să folosim un model.

Recomand a treia metodă și se bazează pe o cunoaștere mai profundă a Word. Vom folosi câmpuri ca substituenți, iar folosind cod PHP vom actualiza direct valorile din câmpuri cu valorile corespunzătoare.

Această abordare este flexibilă, rapidă și în concordanță cu cele mai bune practici Word. Cu acesta, puteți evita, de asemenea, căutarea full-text în document, ceea ce are un efect bun asupra performanței. Rețineți că această soluție are și dezavantaje.

Word nu a acceptat de la început indecși cu nume pentru câmpuri. Chiar dacă am specificat nume pentru câmpurile create, totuși trebuie să folosim identificatorii numerici ai acestor câmpuri. Acest lucru explică și de ce trebuie să folosim o funcție separată (setupfields) pentru a se potrivi cu indexul câmpului și numele câmpului din formular.

În această demonstrație, vom folosi un document cu 5 câmpuri MERGEFIELD. Vom plasa documentul șablon în același loc cu handlerul nostru de script.

Vă rugăm să rețineți că câmpul pentru data tipăririi nu are un câmp corespunzător în formular. De aceea am adăugat un element printdate gol la matricea $inputs. Fără aceasta, scriptul va rula și rula în continuare, dar PHP va emite un avertisment că indexul printdate lipsește din matricea $inputs.

După înlocuirea câmpurilor cu valori noi, imprimăm documentul cu

$d->PrintOut();

Metoda PrintOut preia câțiva parametri opționali și folosim cea mai simplă formă a acesteia. Aceasta va imprima o copie a documentului pe imprimanta implicită atașată la aparatul Windows.

De asemenea, puteți apela PrintPreview pentru a arunca o privire asupra rezultatului înainte de a-l imprima. Într-un mediu complet automat, vom folosi desigur metoda PrintOut.

Trebuie să așteptați ceva timp înainte de a părăsi aplicația Word, deoarece este nevoie de timp pentru ca lucrarea de imprimare să fie pusă în coadă. Fără întârziere(3), metoda $w->Quit se execută imediat și jobul nu este pus în coadă.

În cele din urmă, numim $w->Quit(false) , care închide aplicația Word care a fost apelată de scriptul nostru. Singurul parametru transmis metodei este salvarea fișierului înainte de a ieși. Am făcut modificări documentului, dar nu dorim să le salvăm, deoarece avem nevoie de un șablon curat pentru lucrări ulterioare.

După ce am terminat cu codul, putem încărca pagina formularului, completam câteva valori și îl trimitem. Imaginile de mai jos arată rezultatul scriptului, precum și documentul Word actualizat:

Viteza de procesare îmbunătățită și puțin mai multe despre PIA

PHP este un limbaj cu tastare vag. Un obiect COM de tip Object . În timp ce scriem scriptul, nu avem nicio modalitate de a obține descrierea obiectului, fie că este o aplicație Word, un document sau un câmp. Nu știm ce proprietăți are acest obiect sau ce metode acceptă.

Acest lucru va încetini foarte mult viteza de dezvoltare. Pentru a accelera dezvoltarea, aș recomanda scrierea funcțiilor mai întâi în C# și apoi traducerea codului în PHP. Pot recomanda un IDE gratuit pentru dezvoltarea C# numit „#develop”. O poți găsi. Îl prefer decât Visual Studio pentru că #develop este mai mic, mai ușor și mai rapid.

Migrarea codului C# la PHP nu este atât de înfricoșătoare pe cât pare. Permiteți-mi să vă arăt câteva rânduri în C#:

Word.Application w=nou Word.Application(); w.Vizibil=adevărat; String path=Application.StartupPath+"\\template.docx"; Word.Document d=w.Documents.Open(cale) ca Word.Document; Word.Fields flds=d.Fields; intlen=flds.Count; foreach (Word.Field f in flds) ( f.Select(); int i=f.Index; w.Selection.TypeText("..."); )

Puteți vedea că codul C# este foarte asemănător cu codul PHP pe care l-am arătat mai devreme. C# este un limbaj puternic tipizat, așa că în acest exemplu, puteți vedea mai mulți operatori de distribuție și, de asemenea, trebuie să specificați un tip pentru variabile.

Prin specificarea tipului de variabilă, vă puteți bucura de cod mai clar și de completare automată, iar viteza de dezvoltare este mult crescută.

O altă modalitate de a accelera dezvoltarea PHP este apelarea unei macrocomenzi în Word. Efectuăm aceeași secvență de acțiuni și apoi o salvăm ca macrocomandă. Macrocomanda este scrisă în Visual Basic, care este, de asemenea, ușor de tradus în PHP.

Și, cel mai important, documentația Microsoft Office PIA, în special documentația cu spațiu de nume a fiecărei aplicații Office, este cea mai detaliată referință. Cele mai utilizate trei aplicații sunt:

  • Excel 2013: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel(v=office.15).aspx
  • Word 2013: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word(v=office.15).aspx
  • PowerPoint 2013: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.powerpoint(v=office.15).aspx

Concluzie

În acest articol, v-am arătat cum să populați un document Word cu date folosind bibliotecile PHP COM și interoperabilitatea Microsoft Office.

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

Extensia PHP COM vă deschide ușa pentru a utiliza această combinație.

Continuăm tema de lucru cu formulare în Word pe care am început-o mai devreme. În articolele anterioare, ne-am uitat la formulare doar dintr-o perspectivă „utilizator cu putere”, adică. am creat documente care sunt convenabile pentru completarea manuală. Astăzi, vreau să propun extinderea acestei sarcini și încercarea de a folosi mecanismul de control al conținutului pentru a genera documente.

Înainte de a trece la sarcina noastră imediată, vreau să spun câteva cuvinte despre modul în care datele pentru controalele de conținut sunt stocate în documentele Word (voi omite în mod deliberat modul în care sunt legate de conținutul documentului deocamdată, dar sper să revin la aceasta cândva în articolele următoare).

Întrebarea legitimă este ce este itemProps1.xml si componente similare? Aceste componente stochează descrieri ale surselor de date. Cel mai probabil, așa cum au fost concepute de dezvoltatori, pe lângă fișierele xml încorporate în document, ar fi trebuit să folosească altele, dar până acum a fost implementată doar această metodă.

Ce ne este de folos itemPropsX.xml? Faptul că listează scheme xml (lor targetNamspace) care sunt folosite în părinte itemX.xml. Aceasta înseamnă că, dacă am inclus mai mult de un xml personalizat în document, atunci pentru a-l găsi pe cel potrivit, trebuie să parcurgem itemPropsX.xml componente și găsiți circuitul dorit și, prin urmare, cel dorit itemX.xml.

Acum încă un moment. Nu vom analiza manual relațiile dintre componente și le vom căuta pe cele potrivite folosind doar API-ul de bază pentru ambalaje! În schimb, vom folosi Open XML SDK (build-urile sale sunt disponibile prin NuGet). Desigur, nu am spus un cuvânt despre acest API mai devreme, dar pentru sarcina noastră necesită un minim și tot codul va fi destul de transparent.

Ei bine, introducerea principală este făcută, puteți trece la exemplu.

Conform tradiției stabilite, vom lua același „Raport de întâlnire” pe care l-am desenat în articol. Permiteți-mi să vă reamintesc că așa arăta șablonul de document:

Și astfel, XML-ul la care au fost legate câmpurile documentului

< meetingNotes xmlns ="urn:MeetingNotes" subject ="" date ="" secretary ="" > < participants > < participant name ="" /> < decisions > < decision problem ="" solution ="" responsible ="" controlDate ="" />

Pasul 1. Creați un model de date

De fapt, sarcina noastră nu este doar să generăm un document, ci să creăm (cel puțin într-o versiune nefinalizată) un instrument convenabil pentru utilizare atât de către dezvoltator, cât și de către utilizator.

Prin urmare, vom declara modelul ca o structură de clase C#:

Clasa publică MeetingNotes ( public MeetingNotes() ( Participanți = listă nouă (); Decizii = Listă nouă (); ) public șir Subiect ( get; set; ) public DateTime Data ( get; set; ) public șir Secretar ( get; set; ) public List Participanți ( obțineți; setați; ) Listă publică Decizii ( get; set; ) ) public class Decizie ( public șir Problemă ( get; set; ) public șir Soluție ( get; set; ) public șir Responsabil ( get; set; ) public DateTime ControlDate ( get; set; ) ) public Class Participant ( șir public Nume ( get; set; ) )

În general, nimic special, cu excepția faptului că au fost adăugate atribute pentru a controla serializarea XML (deoarece numele din model și XML-ul necesar sunt ușor diferite).

Pasul 2: Serializați modelul de mai sus în XML

Sarcina este, în principiu, banală. Ceea ce se numește „luați XmlSerializer-ul nostru preferat și mergeți”, dacă nu unul dar

Din păcate, în Versiune curentă Office, aparent, există o eroare, care este după cum urmează: dacă în xml personalizat inainte de declarând spațiul de nume principal (cel din care Word ar trebui să ia elemente pentru afișare), declarați mai multe, apoi controalele de conținut repetate încep să se afișeze incorect (se afișează doar atâtea elemente câte erau în șablonul însuși - adică secțiunea de repetare nu munca).

Acestea. Iată xml-ul care funcționează:

< test xmlns ="urn:Test" attr1 ="1" attr2 ="2" > < repeatedTag attr ="1" /> < repeatedTag attr ="2" /> < repeatedTag attr ="3" />

si acesta si acesta:

< test xmlns ="urn:Test" attr1 ="1" attr2 ="2" xmlns:t ="urn:TTT" > < repeatedTag attr ="1" /> < repeatedTag attr ="2" /> < repeatedTag attr ="3" />

iar acesta a dispărut:

< test xmlns:t ="urn:TTT" xmlns ="urn:Test" attr1 ="1" attr2 ="2" > < repeatedTag attr ="1" /> < repeatedTag attr ="2" /> < repeatedTag attr ="3" />

Am încercat să trimit o eroare la asistența Microsoft pe Connect, dar din anumite motive mi s-a refuzat accesul pentru a trimite erori prin Office. Nici o discuție pe forumul MSDN nu a ajutat.

În general, manevra de ocolire necesară. Dacă am forma XML manual, nu ar fi probleme - am face totul singuri. Cu toate acestea, în acest caz, îmi doresc foarte mult să folosesc XmlSerializer standard, care adaugă implicit câteva dintre spațiile sale de nume la fișierul XML de ieșire, chiar dacă aceste spații de nume nu sunt folosite.

Vom face o suprimare completă a ieșirii propriilor noastre spații de nume în XmlSerializer. Adevărat, această abordare va funcționa numai dacă el nu are nevoie de ele (altfel vor fi adăugate în continuare și chiar ÎNAINTE de ale noastre).

De fapt, întregul cod (cu condiția ca variabila note de întâlnire conține un obiect populat anterior de tip MeetingNotes):

var serializer = new XmlSerializer(typeof (MeetingNotes));
var serializedDataStream = new MemoryStream();

var namespaces = new XmlSerializerNamespaces();
namespaces.Add(“” , “” );

serializer.Serialize(serializedDataStream, meetingNotes, namespaces);
serializedDataStream.Seek(0, SeekOrigin.Begin);

Pasul 3. Introducem XML-ul rezultat într-un document Word.

Aici facem următoarele:

  • copiați șablonul și deschideți copia
  • găsiți XML personalizat dorit în el (căutați după spațiul de nume „urn:MeetingNotes”)
  • înlocuim conținutul componentei cu XML-ul nostru

File.Copy(nume șablon, rezultatNumeDocument, adevărat); folosind (var document = WordprocessingDocument.Open(resultDocumentName, true )) ( var xmlpart = document.MainDocumentPart.CustomXmlParts .Single(xmlPart => xmlPart.CustomXmlPropertiesPart.DataStoreItem.SchemaReferences.OfType) () .Any(sr => sr.Uri.Value == „(!LANG:urn:MeetingNotes"!}

Cu toții ne ocupăm de texte, într-un fel sau altul. Uneori este nevoie să generați o cantitate mare sau nu foarte mare de text pentru o anumită sarcină, de exemplu, pentru a vă juca cu formatarea, dar nu există text la îndemână, este prea lene să îl scrieți singur. Ce să fac? Răspunsul este simplu: utilizați generatorul de text aleatoriu încorporat în Word!

În editorul Microsoft Word, puteți genera text rapid și ușor folosind comenzi speciale. Voi folosi Word 2007 ca cobai.Aceste comenzi ar trebui să funcționeze în toate versiunile de Word. Vă voi spune despre trei metode de generare a textului.

Metoda 1: Folosind rand()

Funcția rand() inserează un eșantion de text localizat, 3 paragrafe din 3 propoziții. Deschideți-vă Word, puneți cursorul acolo unde va apărea textul în curând și introduceți comanda:

și apăsați Enter. Funcția rand în sine va dispărea și în schimb vor apărea 3 paragrafe de text:

Dar asta nu este tot. Dacă aveți nevoie de mult text, atunci puteți utiliza funcția rand cu argumente suplimentare, ca acesta:

=rand(x,y)

Unde " X„ înseamnă numărul de paragrafe și „ y» este numărul de propoziții din fiecare paragraf. De exemplu, =rand(20,5) va insera 20 de paragrafe cu cinci fraze fiecare. DAR =rand(7) va insera 7 paragrafe a câte 3 propoziţii.

Metoda 2: Folosirea lorem()

Pentru a introduce vechiul Lorem Ipsum ca mostră - utilizați funcția lorem (). Tastați următoarea comandă și apăsați Enter:

Și obținem acest text în întregime latină

Funcția lorem() acceptă, de asemenea, argumente suplimentare, cum ar fi rand(), sub forma unui număr de paragrafe și propoziții. Fără argumente, funcția inserează implicit 3 paragrafe cu câte 3 propoziții.

Metoda 3. Funcția rand.old().

Utilizarea este similară cu comenzile anterioare:

=rand.old()

și apăsați Enter.

Funcția rand.old() este lăsată pentru compatibilitate cu vechiul birou, până în 2003 inclusiv. Metoda de aplicare este aceeași cu cele două anterioare, doar textul va consta din aceleași fraze „Mănâncă mai multe din aceste rulouri franțuzești moi și bea ceai”. Această frază este cunoscută de toți cei care uneori au fost nevoiți să lucreze cu fonturi.

Puteți transmite argumente ca în primele două metode.

Asta e tot, textele au fost generate, acum poți să mănânci mai multe din aceste rulouri franțuzești moi și să bei ceai :)

Ați reușit să inserați text folosind funcțiile de mai sus?

Odată, după însumarea rezultatelor olimpiadei, când participanții trebuiau să trimită scrisori cu rezultatele la subiectele promovate (sau nepromovate), am observat că fata stătea și introducea rezultatele examenului, numele elevului. și alte informații în șablonul de scrisoare cu mâinile ei. În fața ei zăceau mai multe foi tipărite din Excel cu nume și note. Copy-Paste, Ctrl + C - Ctrl + V, transferarea numelui complet de la nominativ la cazul genitiv, și astfel s-a lucrat deja cu jumătate din prima dintre cele trei foi de date. Cât timp crezi că ar putea sta nemișcată copiend datele și apoi verificând rezultatul? Cred că de mult timp și ar fi destul de multe greșeli. Dar apoi mai trebuia să semneze plicuri poștale... Mi-a părut rău pentru timpul acordat și în câteva minute i-am arătat cum acest proces poate fi automatizat folosind mijloace simple. După o scurtă excursie, munca ei a fost finalizată în 20 de minute.

În această lecție, vă voi arăta cum să creați rapid documente (scrisori, invitații) cu un minim de timp. LA versiuni diferite limbi, acest proces descris este numit diferit. Deci, în rusă este „Merge”, iar în engleză - „Merge”.

Sper că „scrisorile de fericire” de la fond de pensie, avizele fiscale sunt create în același mod :)

Instrumente

Pentru a crea documente, avem nevoie de OpenOffice Writer. În el vom crea un șablon de scrisoare. Veți avea nevoie și de OpenOffice Calc. În ea, vom crea o bază de date cu numele și adresele acelor persoane pe care, de exemplu, dorim să le invităm la o petrecere. În locul programelor din pachetul OpenOffice, MS Word și Excel pot fi utilizate cu ușurință. Baza de date poate fi cu ușurință în MS Access. Și așa, să începem.

Crearea bazei de date

O bază de date nu este altceva decât un tabel în MS Excel sau OpenOffice Calc, unde datele sunt aranjate în coloane, iar primul rând este folosit pentru denumirea coloanelor. Să începem, de exemplu, coloanele „nume”, „oraș”, „cod poștal”, „adresă”. Introduceți datele și salvați fișierul pe disc.



Alte surse pot fi, de asemenea, utilizate ca baze de date, cum ar fi o agendă de adrese Outlook sau o bază de date MS Access.

Creați un șablon de scrisoare

Odată cu crearea unui șablon de scrisoare, situația este puțin mai complicată. Deoarece datele din tabel (baza noastră de date) vor fi înlocuite în șablon așa cum sunt, atunci scrisoarea trebuie scrisă în consecință. Dacă numele tău complet se află în cazul nominativ din baza ta de date, atunci este puțin probabil să poți folosi acest câmp în contestația „Dragă,<ФИО>!" și pentru plicul din rândul „Către:<ФИО>". În acest din urmă caz, numele complet va părea oarecum stângaci.

Când compuneți un șablon de scrisoare, vă recomand să începeți cu a scrie o scrisoare către unii persoana reala. Poți pentru tine. Apoi evidențiați în el datele pe care le veți lua din baza de date și înlocuiți-le cu câmpurile corespunzătoare. Înainte de a înlocui textul selectat cu un câmp, vă recomand să fiți atenți la ce literă ar trebui să înceapă câmpul din baza de date (minuscule sau majuscule). Desigur, puteți crea imediat un șablon cu câmpurile, dar atunci este posibil să nu observați unele gafe, precum neconcordanțe în cazuri.



Deja în șablonul de mai sus, este clar că avem nevoie de un nume complet în cazul genitiv și de un câmp care să conțină doar primul și al doilea nume. Cu primul câmp, putem înlocui „Către” cu „Destinatar” și apoi numele complet în cazul nominativ ni se va potrivi perfect. Cu al doilea câmp, totul este ceva mai complicat și va trebui să creăm o altă coloană în baza de date și să o completăm cu datele corespunzătoare. Într-una din lecțiile următoare vă voi spune cum să faceți acest lucru automat, dar deocamdată vom presupune că avem deja un astfel de domeniu.

Pentru a insera un câmp și a lega șablonul la baza de date, trebuie să efectuați următoarea secvență de acțiuni. Selectați o bază de date în OpenOffice Writer



și faceți clic pe „Definiți”.



Apoi introduceți câmpul din baza de date conectată în locul potrivit. Pentru a face acest lucru, apăsați Ctrl + F2 sau selectați „Câmpuri” și „Altele” din meniul „Inserare”. În fereastra care se deschide, selectați fila „Băzuri de date”, selectați „Câmpuri de îmbinare prin corespondență” în tipul câmpului, selectați câmpul corespunzător din baza de date și faceți clic pe „Inserați”. Baza de date în sine poate fi selectată și în această fereastră.



După ce un câmp este inserat, fără a închide fereastra curentă, selectați textul care urmează să fie înlocuit cu următorul câmp, selectați câmpul și faceți clic din nou pe „Insert”. Și așa pentru fiecare dintre domenii.

Pentru MS Word, situația este oarecum similară și poate mai convenabilă. După ce ați creat un tabel în MS Excel, lansați MS Word și accesați fila „Mailouts”. Pe această filă, puteți vedea cei trei pași necesari: „Începeți îmbinarea”, „Compuneți documentul și introduceți câmpuri” și „Terminați”. Există și un pas intermediar „Vizualizare rezultat”, dar este opțional.

Și astfel munca începe cu selectarea unui document. Pot fi scrisori, autocolante, un document Word obișnuit. De asemenea, puteți rula vrăjitorul de îmbinare chiar aici, care vă va ghida prin toți pașii procesului. Următorul pas este selectarea destinatarului, adică baza de date. Aici puteți alege o bază de date gata făcută (de exemplu, tabelul MS Excel creat în etapa anterioară) sau puteți crea o nouă listă. După ce lista este selectată, devin active butoanele „Inserare câmp de îmbinare”, „Editare lista de destinatari”, etc.. Prin intermediul casetei de dialog „Editare lista de destinatari”, care se deschide cu butonul corespunzător, puteți selecta din întreaga listă doar înregistrările necesare comasării.







La inserarea câmpurilor, mi se pare convenabil să evidențiezi toate câmpurile cu gri făcând clic pe butonul „Selectează Îmbinare câmpuri”. În caz contrar, dacă există multe astfel de câmpuri, atunci acestea se pot pierde în text.

Și așa, șablonul este gata.

Generarea scrisorilor

Ultima etapă este generarea literelor. În OpenOffice, pentru aceasta, în meniul „Tools”, selectați „Mail Merge Wizard...” și parcurgeți toți pașii propuși pentru a combina șablonul nostru cu baza de date.





În caseta de dialog, vedem că din cele 8 puncte propuse, nu trebuie să realizăm unele puncte. Deci am creat deja documentul și nu trebuie să-l edităm, am introdus deja și blocul de adrese. Dar să mergem în ordine.

În primul rând, alegem să creăm litere pe baza documentului curent și facem clic pe „Next” în partea de jos a ferestrei. Al doilea punct este dacă vom primi această scrisoare de hârtie sau e-mail. Pentru ca scrisoarea să fie salvată într-un fișier, selectați primul. Faceți clic pe „Următorul”. În al treilea paragraf, ni se oferă să creăm un bloc de adrese, dar, deoarece l-am creat manual, debifăm toate casetele și trecem la pasul următor. Aici ni se oferă să inserăm un recurs, dar îl avem și deja, așa că faceți clic pe „Următorul”. În al șaselea paragraf, puteți edita documentul, puteți privi documentul cu câmpurile inserate din baza de date și, dacă este necesar, excludeți unele câmpuri.



La pasul 7, se propune editarea fiecărui fișier creat ca urmare a conectării șablonului la baza de date. Și în sfârșit, la ultimul, pasul 8, poți alege ce să faci cu documentele primite. Puteți salva, imprima sau trimite prin e-mail. În acest caz, puteți salva toate documentele într-un singur fișier sau fiecare document separat.

În MS Word, procesul de îmbinare este finalizat făcând clic pe butonul „Găsiți și îmbinați”.



Din meniul derulant, este evident că toate scrisorile pot fi tipărite și trimise prin e-mail, dar nu este evident că toate pot fi salvate într-un fișier. Pentru a salva, selectați primul element - „Schimbați documentele individuale”. Aceasta va deschide un nou document în care fiecare literă nouă va fi localizată pe o pagină nouă, iar aici acest fișier poate fi deja salvat.

Concluzie

Și astfel, în această lecție, ați învățat cum să utilizați instrumentul de îmbinare pentru a crea documente pe baza unui șablon. Să scriem pe scurt succesiunea de acțiuni:

  1. Este necesară crearea unei baze de date în procesorul de foi de calcul, din care se vor prelua date pentru completarea câmpurilor.
  2. Trebuie să creați un șablon de scrisoare.
  3. Efectuați îmbinarea și salvați rezultatul.

A, nume de familie în coloană Bși profesii în rubrica C.

2. Creați un document Word (.doc sau .docx)


(A), (B)și (C).

(A), (B)și (C) (A)- Nume, (B)- nume de familie, (C)- profesie.

Setări programe.

3. Alegeți căi pentru fișiere și foldere


Selectați

4. Setați foile și rândurile datelor dorite


Fișe de date ale fișierului Excel

Rânduri de date ale fișierului Excel Fișe de date ale fișierului Excel

1 .

Dacă doriți ca toate foile și/sau rândurile fișierului dvs. Excel cu date să participe la formarea documentului, faceți clic pe butonul corespunzător din dreapta cu legenda numere(inscripția sa se va schimba în Toate).

5. Setați șablonul de nume pentru fișierele de cuvinte noi


Setați șablonul de nume pentru fișierele de cuvinte noi:

Șablon nou de nume de fișiere de cuvinte este un șablon pentru numele documentelor noi (fișiere-word) generate de program. Aici, șablonul de nume conține numele coloanelor fișierului excel, încadrate de acolade: (A)și (B). La generarea unui nou document, programul le va înlocui pe toate (A)și (B) valorile celulelor corespunzătoare din fișierul Excel - acesta va fi numele noului document (fișier Word).

Puteți seta propriile caractere de chenar în filă Setări programe.

6. Faceți clic pe „Generați”


Faceți clic pe butonul Genera iar progresul va apărea pe ecran. Documentele (fișiere-word) vor fi create exact la fel de multe linii ale fișierului excel sunt implicate în formare.

7. Totul


Toate documentele (fișierele word) au fost create și se află în folderul specificat în Folder pentru a salva noile fișiere Word. Tot:)

exwog- generator de șabloane de rapoarte de la Excel la Word

Generator gratuit de fișiere Word după șablon (fișier Word) bazat pe datele fișierului Excel

Funcționează pe Mac OS, Windows și Linux

Vă permite să setați numele noilor fișiere de cuvinte generate

Vă permite să setați foi și rânduri cu datele necesare

Vă permite să setați caractere de chenar pentru numele coloanelor Excel

Ușor de folosit

Stocați datele în format Excel (.xls și .xlsx) și generați fișiere Word (.doc și .docx) în câteva clicuri :)


Cum functioneaza?

Aruncă o privire la fișierul tău excel


În acest exemplu, fișierul excel conține informații despre clienți. Fiecare linie corespunde unui anumit client. Numele sunt într-o coloană A, nume de familie în coloană Bși profesii în rubrica C.

Click pentru a vedea

Creați un document Word (.doc sau .docx)


Click pentru a vedea

Creați un „șablon” (fișier-word) pentru generarea de noi documente (fișiere-word). Aici textul „șablonului” conține numele coloanelor fișierului excel, încadrate de acolade: (A), (B)și (C).

Programul va genera noi documente conform „șablonului” înlocuind toate (A), (B)și (C) valorile celulelor corespunzătoare din fișierul Excel: (A)- Nume, (B)- nume de familie, (C)- profesie.

De asemenea, puteți seta propriile caractere de chenar în filă Setări programe.

Alegeți căi pentru fișiere și foldere


Selectați căile pentru fișiere și foldere (butoane etichetate Selectați). În program, specificați următoarele căi:

Fișier Excel cu date (*.xls, *.xlsx)- aceasta este calea către fișierul dvs. Excel cu date (informații despre client);

Fișier șablon Word (*.doc, *.docx) este calea către „șablonul” dvs. (fișierul de cuvinte creat în pasul anterior);

Folder pentru a salva noile fișiere Word- aceasta este calea către folderul în care programul va salva documentele nou generate.

Click pentru a vedea

Setați foile și rândurile datelor dorite


Click pentru a vedea

Setați numărul de foi și rânduri ale fișierului dvs. Excel cu date (informații despre clienți) pe care doriți să generați documente:

Fișe de date ale fișierului Excel- numerele de foi din fișierul dumneavoastră excel care vor fi implicate în formarea de noi documente;

Rânduri de date ale fișierului Excel- numerele liniilor de foi (colile specificate în Fișe de date ale fișierului Excel) din fișierul dumneavoastră excel care va fi implicat în formarea de noi documente. Pe baza datelor fiecărei linii specificate, va fi creat un document separat (fișier-word).

Numerotarea foilor și liniilor din program începe cu 1 .