Žijeme vo svete, kde vývojári PHP musia komunikovať operačný systém Windows. WMI (Windows Management Interface) Správa systému Windows) – jedným z takýchto príkladov je interakcia s Microsoft Office.

V tomto článku sa pozrieme na jednoduchú integráciu medzi Wordom a PHP: generovanie dokument spoločnosti Microsoft Vstupné polia založené na slove vo formulári HTML pomocou PHP (a jeho rozšírenia Interop).

Prípravné kroky

V prvom rade sa presvedčíme, že máme nakonfigurované základné prostredie WAMP. Keďže Interop je k dispozícii iba v systéme Windows, potrebujeme naše server Apache a inštalácia PHP boli nasadené do Stroj so systémom Windows. V tejto kapacite používam EasyPHP 14.1, ktorý sa veľmi ľahko inštaluje a konfiguruje.

Ďalšia vec, ktorú musíte urobiť, je nainštalovať balík Microsoft Office. Verzia nie je veľmi dôležitá. Používam Microsoft Office 2013 Pro, ale každá verzia Office staršia ako 2007 by mala byť v poriadku.

Musíme sa tiež uistiť, že máme nainštalované knižnice na vývoj aplikácie Interop (PIA, Primary Interop Assemblies, Main Interop Assemblies). Môžete to zistiť otvorením programu Windows Prieskumník a prechodom do adresára \assembly a tam by sme mali vidieť sadu nainštalovaných zostáv:

Tu môžete vidieť prvok Microsoft.Office.Interop.Word (podčiarknutý na snímke obrazovky). Toto bude zostava, ktorú použijeme v našej ukážke. Venujte zvláštnu pozornosť poliam „Názov zostavy“, „Verzia“ a „Token verejného kľúča“. Čoskoro ich použijeme v našom PHP skripte.

Tento adresár obsahuje aj ďalšie zostavy (vrátane celej rodiny Office) dostupné na použitie vo vašich programoch (nielen pre PHP, ale aj pre VB.net, C# atď.).

Ak zoznam zostáv neobsahuje celý balík Microsoft.Office.Interop, musíme buď preinštalovať Office pridaním PIA, alebo manuálne stiahnuť balík z lokality Microsoft a nainštalovať ho. Pre viac podrobné pokyny pozrite si túto stránku na MSDN.

Komentujte: Na stiahnutie a inštaláciu je k dispozícii iba distribúcia PIA Microsoft Office 2010. Verzia zostáv v tomto balíku je 14.0.0 a verzia 15 sa dodáva iba s balíkom Office 2013.

Nakoniec musíte povoliť rozšírenie php_com_dotnet.dll v php.ini a reštartovať server.

Teraz môžete prejsť k programovaniu.

HTML formulár

Keďže väčšina tohto príkladu je na strane servera, vytvoríme jednoduchú stránku s formulárom, ktorý bude vyzerať takto:

Máme textové pole pre meno, skupinu prepínačov pre pohlavie, posúvač pre vek a oblasť na zadávanie textu na zadanie správy, ako aj neslávne známe tlačidlo „Odoslať“.

Uložte tento súbor ako „index.html“ do virtuálneho hostiteľského adresára, aby ste ho mohli získať na adrese http://test/test/interop.

Serverová časť

Súbor obslužného programu na strane servera je hlavným cieľom našej konverzácie. Na začiatok poskytnem úplný kód tohto súboru a potom ho vysvetlím krok za krokom.

viditeľné = pravdivé; $fn = __DIR__ . "\\template.docx"; $d = $w->Dokumenty->Otvoriť($fn); echo "Dokument je otvorený.


"; $flds = $d->Polia; $count = $flds->Count; echo "V dokumente sú polia $count.
"; echo"
    "; $mapping = setupfields(); foreach ($flds ako $index => $f) ( $f->Select(); $key = $mapping[$index]; $value = $inputs[$key]; if ($key == "pohlavie") ( if ($value == "m") $value = "Pán."; else $value = "Pani."; } if($key=="printdate") $value= date ("Y-m-d H:i:s"); $w->Selection->TypeText($value); echo "!}
  • Pole $index: $key priradím hodnotu $hodnota
  • ";) echo"
"; echo "Spracovanie dokončené!

"; echo "Píšem, počkajte prosím...
"; $d->PrintOut(); sleep(3); echo "Hotovo!"; $w->Quit(false); $w=null; function setupfields() ( $mapping = array(); $mapping = "pohlavie"; $mapping = "meno"; $mapping = "vek"; $mapping = "správa"; $mapping = "dátum tlače"; návrat $mapovanie; )

Po vyplnení premennej $inputs hodnotami prijatými z formulára a vytvorením prázdneho prvku s kľúčom printdate (prečo sme to urobili neskôr) sa dostávame k štyrom veľmi dôležitým riadkom:

$assembly = "Microsoft.Office.Interop.Word, verzia=15.0.0.0, kultúra=neutral, PublicKeyToken=71e9bce111e9429c"; $class = "Microsoft.Office.Interop.Word.ApplicationClass"; $w = new DOTNET($zostava, $trieda); $w->visible = true;

Manipulátor COM v PHP vyžaduje vytvorenie inštancie triedy v rámci „assembly“. V našom prípade pracujeme s Wordom. Ak sa pozriete na prvú snímku obrazovky, môžete si zapísať úplný podpis zostavy pre Word:

  • „Názov“, „Verzia“, „Token verejného kľúča“ – to všetko je prevzaté z informácií, ktoré je možné zobraziť v „c:\Windows\assembly“.
  • „Kultúra“ je vždy neutrálna

Trieda, na ktorú chceme odkazovať, sa vždy nazýva „názov zostavy“ + „ .ApplicationClass “.

Nastavením týchto dvoch parametrov môžeme získať objekt pre prácu s Wordom.

Tento objekt môže zostať na pozadí, alebo ho môžeme uviesť do pracovného režimu nastavením atribútu viditeľný na true .

Ďalším krokom je otvorenie dokumentu, ktorý vyžaduje spracovanie, a zápis inštancie „dokumentu“ do premennej $d.

Ak chcete vytvoriť obsah v dokumente na základe údajov formulára, môžete použiť niekoľko trás.

Najhoršie by bolo napevno zakódovať obsah dokumentu v PHP a potom ho vypísať do dokumentu Word. Dôrazne odporúčam nerobiť to z nasledujúcich dôvodov:

  1. Stratíte flexibilitu. Akékoľvek zmeny vo výstupnom súbore budú vyžadovať zmeny v kóde PHP.
  2. Tým sa prelomí oddelenie kontroly a pohľadu
  3. Použitie štýlov na obsah dokumentu (zarovnanie, fonty, štýly atď.) v skripte výrazne zvýši počet riadkov kódu. Programová zmena štýlov je príliš ťažkopádna.

Ďalšou možnosťou by bolo použiť vyhľadávanie a nahradenie. PHP má na to dobré vstavané zariadenia. Môžeme vytvoriť dokument programu Word, do ktorého umiestnime štítky so špeciálnymi oddeľovačmi, ktoré sa neskôr nahradia. Môžeme napríklad vytvoriť dokument, ktorý obsahuje nasledujúci úryvok:

a pomocou PHP ho môžeme jednoducho nahradiť obsahom poľa „Name“ prijatého z formulára.

Je to jednoduché a šetrí nás to od všetkých nepríjemných následkov, s ktorými sa stretávame pri prvej metóde. Musíme sa len rozhodnúť pre správny oddeľovač, v takom prípade nakoniec použijeme vzor.

Odporúčam tretiu metódu a spolieha sa na hlbšiu znalosť Wordu. Polia použijeme ako zástupné symboly a pomocou kódu PHP priamo aktualizujeme hodnoty v poliach zodpovedajúcimi hodnotami.

Tento prístup je flexibilný, rýchly a v súlade s osvedčenými postupmi programu Word. Môže vám tiež pomôcť vyhnúť sa fulltextovému vyhľadávaniu v dokumente, čo je dobré pre výkon. Podotýkam, že toto riešenie má aj nevýhody.

Word nepodporoval pomenované indexy pre polia od samého začiatku. Aj keď sme zadali názvy pre vytvárané polia, stále musíme použiť číselné identifikátory týchto polí. To tiež vysvetľuje, prečo musíme použiť samostatnú funkciu (setupfields), aby sme priradili index poľa k názvu poľa z formulára.

V tejto ukážkovej lekcii budeme používať dokument s 5 poliami MERGEFIELD. Dokument šablóny umiestnime na rovnaké miesto ako náš obslužný program skriptu.

Upozorňujeme, že pole dátumu tlače nemá zodpovedajúce pole vo formulári. Preto sme do poľa $inputs pridali prázdny prvok printdate. Bez toho bude skript stále bežať a spúšťať, ale PHP vydá varovanie, že index dátumu tlače nie je v poli $inputs.

Po nahradení polí novými hodnotami vytlačíme dokument pomocou

$d->PrintOut();

Metóda PrintOut má niekoľko voliteľných parametrov a my používame jej najjednoduchšiu formu. Toto vytlačí jednu kópiu dokumentu na predvolenej tlačiarni pripojenej k počítaču so systémom Windows.

Môžete tiež zavolať PrintPreview a zobraziť ukážku výstupu pred jeho tlačou. V plne automatickom prostredí samozrejme použijeme metódu PrintOut.

Možno budete musieť chvíľu počkať, kým vypnete aplikáciu Word, takže zaradenie tlačovej úlohy do frontu nejaký čas trvá. Bez oneskorenia(3) sa metóda $w->Quit vykoná okamžite a úloha sa nezaradí do frontu.

Nakoniec zavoláme $w->Quit(false) , čím sa zatvorí aplikácia Word, ktorú volal náš skript. Jediný parameter odovzdaný metóde je inštrukcia na uloženie súboru pred ukončením. Urobili sme zmeny v dokumente, ale nechceme ich ukladať, pretože na neskoršiu prácu potrebujeme čistú šablónu.

Keď skončíme s kódom, môžeme načítať stránku formulára, vyplniť niektoré hodnoty a odoslať ho. Na obrázkoch nižšie je zobrazený výstup skriptu, ako aj aktualizovaný dokument programu Word:

Vylepšená rýchlosť spracovania a niečo viac o PIA

PHP je slabo napísaný jazyk. COM objekt typu Object. Pri písaní skriptu nemáme žiadny spôsob, ako získať popis objektu, či už je to aplikácia Word, dokument alebo pole. Nevieme, aké vlastnosti má tento objekt, ani aké metódy podporuje.

To výrazne spomalí rýchlosť vývoja. Pre urýchlenie vývoja by som odporučil napísať funkcie najskôr v C# a potom preložiť kód do PHP. Môžem odporučiť bezplatné IDE pre vývoj C# s názvom „#develop“. Môžete to nájsť. Mám ho radšej ako Visual Studio, pretože #develop je menší, jednoduchší a rýchlejší.

Migrácia kódu C# do PHP nie je taká strašidelná, ako sa zdá. Dovoľte mi ukázať vám pár riadkov v C#:

Word.Application w=new Word.Application(); w.Visible=true; String path=Application.StartupPath+"\\template.docx"; Word.Document d=w.Documents.Open(cesta) ako Word.Document; Word.Fields flds=d.Fields; int len=flds.Pocet; foreach (Word.Field f in flds) ( f.Select(); int i=f.Index; w.Selection.TypeText("..."); )

Všimnete si, že kód C# je veľmi podobný kódu PHP, ktorý som ukázal predtým. C# je silne typovaný jazyk, takže v tomto príklade si všimnete, že existuje niekoľko operátorov pretypovania a že je potrebné zadať premenné.

Zadaním typu premennej si môžete vychutnať čistejší kód a automatické dopĺňanie a výrazne sa zvýši rýchlosť vývoja.

Ďalším spôsobom, ako urýchliť vývoj PHP, je zavolať makro vo Worde. Vykonávame rovnakú postupnosť akcií a potom ju uložíme ako makro. Makro je napísané vo Visual Basicu, ktorý je tiež ľahko preložiteľný do PHP.

A čo je najdôležitejšie, dokumentácia PIA pre Office od Microsoftu, najmä dokumentácia menného priestoru pre každú aplikáciu balíka Office, je najpodrobnejším dostupným referenčným materiálom. Tri najpoužívanejšie aplikácie sú:

  • 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

Záver

V tomto článku sme ukázali, ako naplniť dokument programu Word údajmi pomocou knižníc PHP COM a interoperabilných možností Microsoft Office.

Windows a Office sú široko používané v každodennom živote. Poznať silu Office/Window a PHP bude užitočné pre každého vývojára PHP a Windows.

Rozšírenie PHP COM otvára dvere používaniu tejto kombinácie.

Pokračujeme v téme práce s formulármi vo Worde, ktorú sme začali skôr. V predchádzajúcich článkoch sme sa na formuláre pozerali len z pohľadu “pokročilého užívateľa”, t.j. Vytvorili sme dokumenty, ktoré sa dali ľahko ručne vyplniť. Dnes chcem navrhnúť rozšírenie tejto úlohy a pokúsiť sa použiť mechanizmus Content control na generovanie dokumentov.

Predtým, než sa pustíme do našej bezprostrednej úlohy, chcem povedať pár slov o tom, ako sa údaje pre ovládacie prvky obsahu ukladajú v dokumentoch programu Word (zámerne vynechám, ako sú prepojené s obsahom dokumentu, ale dúfam, že sa vrátim k tomu niekedy v ďalších článkoch).

Logická otázka - čo to je? itemProps1.xml a podobné komponenty? Tieto komponenty ukladajú popisy zdrojov údajov. S najväčšou pravdepodobnosťou, ako plánovali vývojári, sa okrem xml súborov zabudovaných do dokumentu mali použiť aj ďalšie, ale zatiaľ bola implementovaná iba táto metóda.

Prečo sú pre nás užitočné? itemPropsX.xml? Skutočnosť, že uvádzajú schémy xml (ich targetNamespace), ktoré sa používajú v nadradenom itemX.xml. To znamená, že ak sme do dokumentu zahrnuli viac ako jeden vlastný xml, potom, aby sme našli ten, ktorý potrebujeme, musíme prejsť itemPropsX.xml komponenty a nájsť ten správny obvod, a teda ten správny itemX.xml.

Teraz ešte jedna vec. Nebudeme ručne analyzovať spojenia medzi komponentmi a hľadať tie, ktoré potrebujeme, iba pomocou základného Packaging API! Namiesto toho použijeme Open XML SDK (jeho zostavy sú dostupné cez NuGet). Samozrejme, o tomto API sme ešte nepovedali ani slovo, ale pre našu úlohu sa od neho vyžaduje minimum a celý kód bude celkom transparentný.

Tak a základný úvod je hotový, môžeme začať príkladom.

Podľa zavedenej tradície vezmeme rovnakú „Správu zo stretnutia“, ktorú sme nakreslili v článku. Dovoľte mi pripomenúť, že takto vyzerala šablóna dokumentu:

A toto je XML, na ktorý boli polia dokumentu naviazané

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

Krok 1: Vytvorte dátový model

V skutočnosti nie je našou úlohou len vygenerovať dokument, ale vytvoriť (aspoň vo verzii konceptu) pohodlný nástroj, ktorý bude používať vývojár aj používateľ.

Preto deklarujeme model vo forme štruktúry triedy C#:

Verejná trieda MeetingNotes ( public MeetingNotes() ( Účastníci = nový zoznam (); Rozhodnutia = nový zoznam (); ) public string Subject ( get; set; ) public DateTime Date ( get; set; ) public string Secretary ( get; set; ) public List Účastníci ( get; set; ) verejný zoznam Rozhodnutia ( get; set; ) ) public class Decision ( public string Problem ( get; set; ) public string Solution ( get; set; ) public string Responsible ( get; set; ) public DateTime ControlDate ( get; set; ) ) public účastník triedy ( verejný reťazec Meno ( get; set; ) )

Celkovo vzaté, nič zvláštne, okrem toho, že boli pridané atribúty na riadenie serializácie XML (pretože názvy v modeli a požadované XML sa mierne líšia).

Krok 2: Serializujte vyššie uvedený model do XML

Úloha je v princípe triviálna. To, čomu sa hovorí „vezmite si náš obľúbený XmlSerializer a choďte“, ak nie na jednu vec ale

Bohužiaľ, v aktuálna verzia Office má zjavne chybu, ktorá je nasledovná: ak je vo vlastnom xml predtým deklarovaním hlavného priestoru názvov (ten, z ktorého má Word preberať prvky na zobrazenie), deklarovať nejaký iný, potom sa opakujúce ovládacie prvky obsahu začnú zobrazovať nesprávne (zobrazuje sa len toľko prvkov, koľko ich bolo v samotnej šablóne – t. j. opakujúca sa časť nefunguje ).

Tie. Toto je xml, ktorý funguje:

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

a aj tento:

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

ale tento tam už nie je:

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

Pokúsil som sa odoslať chybu podpore spoločnosti Microsoft na Connect, ale z nejakého dôvodu nemám prístup na odosielanie chýb balíka Office. A nepomohla ani diskusia na fóre MSDN.

Vo všeobecnosti nevyhnutné riešenie. Ak by sme XML vygenerovali ručne, neboli by žiadne problémy – všetko by sme si urobili sami. V tomto prípade však naozaj chcem použiť štandardný XmlSerializer, ktorý štandardne pridáva niekoľko svojich menných priestorov do výstupného XML, aj keď sa tieto menné priestory nepoužívajú.

Úplne potlačíme výstup vlastných menných priestorov v XmlSerializer. Je pravda, že tento prístup bude fungovať iba vtedy, ak ich skutočne nepotrebuje (inak budú stále pridávané a tesne PRED našimi).

Vlastne celý kód (za predpokladu, že premenná poznámky zo stretnutia obsahuje predtým vyplnený objekt typu 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);

Krok 3. Zadajte výsledný XML do dokumentu programu Word.

Tu postupujeme nasledovne:

  • skopírujte šablónu a otvorte kópiu
  • nájdite v ňom požadovaný vlastný xml (hľadajte podľa menného priestoru „urna:Poznámky zo stretnutia“)
  • nahradiť obsah komponentu naším XML

File.Copy(meno_template, vysledokNazovDokumentu, true ); using (var document = WordprocessingDocument.Open(resultDocumentName, true )) ( var xmlpart = document.MainDocumentPart.CustomXmlParts .Single(xmlPart => xmlPart.CustomXmlPropertiesPart.DataStoreItem.SchemaReferences.OfType ().Akékoľvek(sr => sr.Uri.Value == "urn:MeetingNotes"!}

Všetci sa tak či onak zaoberáme textami. Niekedy je potrebné vygenerovať veľké alebo nie príliš veľké množstvo textu na nejakú úlohu, napríklad pohrať sa s formátovaním, ale nie je po ruke žiadny text, ste leniví na to, aby ste ho napísali sami. Čo robiť? Odpoveď je jednoduchá: použite generátor náhodného textu zabudovaný do programu Word!

V editore Microsoft Word môžete rýchlo a jednoducho generovať text pomocou špeciálnych príkazov. Ako pokusný králik budem používať Word 2007. Tieto príkazy by mali fungovať vo všetkých verziách Wordu. Poviem vám o troch metódach generovania textu.

Metóda 1: Použitie rand()

Funkcia rand() vloží lokalizovaný vzorový text, 3 odseky po 3 vety. Otvorte svoj Word, umiestnite kurzor na miesto, kde sa má objaviť hromada textu, a zadajte príkaz:

a stlačte Enter. Samotná funkcia rand zmizne a na jej mieste sa objavia 3 odseky textu:

To však nie je všetko. Ak potrebujete veľa textu, môžete použiť funkciu rand s ďalšími argumentmi, ako napríklad:

=rand(x,y)

Kde " X"znamená počet odsekov a" r“—počet viet v každom odseku. Napríklad, =rand(20,5) vloží 20 odsekov po piatich frázach. A =rand(7) vloží 7 odsekov po 3 vety.

Metóda 2: Použitie lorem()

Ak chcete vložiť starý dobrý Lorem Ipsum ako vzorku, použite funkciu lorem(). Zadajte nasledujúci príkaz a stlačte kláves Enter:

A dostaneme tento pan-latinský text

Funkcia lorem() tiež ľahko prijíma ďalšie argumenty, ako napríklad rand(), vo forme počtu odsekov a viet. Bez argumentov funkcia štandardne vloží 3 odseky s tromi vetami.

Metóda 3. funkcia rand.old().

Použitie je podobné predchádzajúcim príkazom:

=rand.old()

a stlačte Enter.

Funkcia rand.old() je ponechaná z dôvodu kompatibility so starým office, do roku 2003 vrátane. Spôsob aplikácie je rovnaký ako v predchádzajúcich dvoch, len text bude pozostávať z rovnakých fráz „Zjedzte ešte tieto mäkké francúzske rolky a vypite čaj“. Toto slovné spojenie pozná každý, kto občas pracoval s písmom.

Môžete odovzdať argumenty, ako v prvých dvoch metódach.

To je všetko, texty sú vygenerované, teraz môžete jesť viac týchto mäkkých francúzskych roliek a piť čaj :)

Podarilo sa vám vložiť text pomocou vyššie uvedených funkcií?

Raz som si po sčítaní výsledkov olympiády, keď mali účastníci posielať listy s výsledkami z absolvovaných (alebo neúspešných) predmetov, všimol, že dievča sedí a rukami zadáva výsledky skúšky, meno a ďalšie informácie do šablóny listu. Pred ňou ležalo niekoľko hárkov vytlačených z Excelu s menami a známkami. Copy-Paste, Ctrl+C - Ctrl+V, preklad celého mena z nominatívu do genitívu, a tak je práca už hotová s polovicou prvého z troch hárkov údajov. Čo myslíte, ako dlho tam mohla sedieť, kopírovať údaje a potom kontrolovať výsledok? Myslím, že by to trvalo dosť dlho a bolo by tam dosť chýb. Potom však ešte musela podpísať poštové obálky... Zľutoval som jej čas a za pár minút som ukázal, ako sa tento proces dá zautomatizovať pomocou jednoduchých prostriedkov. Po malej exkurzii bola jej práca hotová za 20 minút.

V tejto lekcii vám ukážem, ako môžete rýchlo vytvárať dokumenty (listy, pozvánky), pričom pri tom strávite minimum času. IN rôzne verzie Tento opísaný proces sa v rôznych jazykoch nazýva inak. Takže v ruštine je to „Merge“ a v angličtine je to „Merge“.

Dúfam, že reťazové listy sú z dôchodkový fond, daňové výmery vznikajú rovnakým spôsobom :)

Nástroje

Na vytváranie dokumentov potrebujeme OpenOffice Writer. V ňom vytvoríme šablónu listu. Budete tiež potrebovať OpenOffice Calc. V ňom vytvoríme databázu s menami a adresami tých ľudí, ktorých napríklad chceme pozvať na párty. Namiesto programov z balíka OpenOffice možno jednoducho použiť MS Word a Excel. Databázu je možné jednoducho uložiť do MS Access. A tak, začnime.

Vytvorenie databázy

Databáza nie je nič iné ako tabuľka v MS Excel alebo OpenOffice Calc, kde sú dáta usporiadané do stĺpcov a prvý riadok slúži na pomenovanie stĺpcov. Vytvorme si napríklad stĺpce „celé meno“, „mesto“, „index“, „adresa“. Zadajte údaje a uložte súbor na disk.



Ako databázy možno použiť aj iné zdroje, napríklad adresár programu Outlook alebo databázu MS Access.

Vytvorenie šablóny listu

Vytvorenie šablóny listu je trochu zložitejšie. Keďže údaje z tabuľky (našej databázy) sa do šablóny vložia tak, ako sú, treba podľa toho napísať aj písmeno. Ak je vaše celé meno vo vašej databáze uvedené v nominatívnom prípade, je nepravdepodobné, že budete môcť použiť toto pole v adrese „Vážený,<ФИО>!“ a pre obálku v riadku „Komu:<ФИО>" V druhom prípade bude celé meno vyzerať trochu nemotorne.

Pri skladaní predlohy listu odporúčam začať tým, že niekomu napíšete list skutočnému človeku. Môžete to urobiť sami. Potom v ňom zvýraznite údaje, ktoré preberiete z databázy a nahraďte ich príslušnými políčkami. Pred nahradením vybraného textu v poli odporúčam venovať pozornosť tomu, akým písmenom má pole v databáze začínať (malé alebo veľké). Samozrejme, môžete si vytvoriť šablónu hneď s poľami, ale potom si možno nevšimnete niektoré chyby, ako sú nezrovnalosti v prípadoch.



Už v danej šablóne je jasné, že budeme potrebovať celé meno v prípade genitívu a pole obsahujúce len krstné a stredné meno. Prvým poľom môžeme nahradiť „Komu“ za „Príjemca“ a potom nám bude úplne vyhovovať celé meno v nominatívnom prípade. S druhým poľom je všetko o niečo komplikovanejšie a budeme musieť vytvoriť ďalší stĺpec v databáze a vyplniť ho zodpovedajúcimi údajmi. V jednej z nasledujúcich lekcií vám poviem, ako to urobiť automaticky, ale zatiaľ budeme predpokladať, že už také pole máme.

Ak chcete vložiť pole a naviazať šablónu na databázu, musíte vykonať nasledujúcu postupnosť akcií. V OpenOffice Writer vyberte databázu



a kliknite na „Definovať“.



Potom vložte pole z pripojenej databázy na požadované miesto. Ak to chcete urobiť, stlačte Ctrl+F2 alebo v ponuke „Vložiť“ vyberte „Polia“ a „Iné“. V okne, ktoré sa otvorí, vyberte kartu „Databázy“, v type poľa vyberte „Polia hromadnej korešpondencie“, vyberte príslušné pole z databázy a kliknite na „Vložiť“. V tomto okne je možné vybrať aj aktuálnu databázu.



Po vložení jedného poľa môžete bez zatvorenia aktuálneho okna vybrať text a nahradiť ho ďalším poľom, vybrať pole a znova kliknúť na „Vložiť“. A tak ďalej pre každé z polí.

Pre MS Word je situácia trochu podobná a možno aj pohodlnejšia. Po vytvorení tabuľky v programe MS Excel spustite MS Word a prejdite na kartu „Distribúcie“. Na tejto karte môžete vidieť tri potrebné kroky: „Spustiť zlúčenie“, „Vytvoriť dokument a vložiť polia“ a „Dokončiť“. Existuje aj medzikrok „Zobraziť výsledok“, ale je voliteľný.

A tak práca začína výberom dokumentu. Môžu to byť listy, nálepky alebo bežný dokument programu Word. Okamžite môžete spustiť Sprievodcu zlúčením, ktorý vás prevedie všetkými fázami procesu. Ďalším krokom je výber príjemcu, teda databázy. Tu si môžete vybrať hotovú databázu (napríklad tabuľku MS Excel vytvorenú v predchádzajúcej fáze) alebo vytvoriť nový zoznam. Po výbere zoznamu sa aktivujú tlačidlá „Vložiť zlučovacie pole“, „Zmeniť zoznam príjemcov“ atď. len záznamy potrebné na zlúčenie.







Pri vkladaní polí považujem za vhodné zvýrazniť všetky polia sivou farbou kliknutím na tlačidlo „Zvýrazniť zlúčiť polia“. V opačnom prípade, ak je takýchto polí veľa, môžu sa v texte stratiť.

A tak je šablóna pripravená.

Generovanie písmen

Poslednou fázou je generovanie písmen. V OpenOffice to urobíte tak, že v menu „Nástroje“ vyberiete „Sprievodca hromadnou korešpondenciou...“ a prejdete všetkými navrhovanými krokmi na zlúčenie našej šablóny s databázou.





V dialógovom okne vidíme, že z 8 navrhnutých bodov nemusíme niektoré body vykonať. Takže dokument už máme vytvorený a nemusíme ho upravovať, už sme vložili aj blok adresy. Ale poďme pekne po poriadku.

Najprv vyberte, že vytvárame písmená na základe aktuálneho dokumentu a kliknite na „Ďalej“ v spodnej časti okna. Druhým bodom je vybrať si, či budeme mať tento papierový list alebo e-mail. Aby sa list uložil do súboru, mali by ste vybrať prvý. Kliknite na „Ďalej“. Tretí bod nás žiada o vytvorenie bloku adresy, ale keďže sme ho vytvorili ručne, zrušíme začiarknutie všetkých políčok a prejdeme na ďalší krok. Tu sme požiadaní o vloženie požiadavky, ale už jednu máme, takže klikneme na „Ďalej“. Šiestym bodom je upraviť dokument, pozrieť si dokument s poliami vloženými z databázy a prípadne niektoré polia vylúčiť.



Krok 7 vás požiada o úpravu každého súboru vytvoreného ako výsledok pripojenia šablóny k databáze. A nakoniec, v poslednom, 8. kroku si môžete vybrať, čo s prijatými dokumentmi urobíte. Môžete uložiť, vytlačiť alebo poslať e-mailom. V tomto prípade môžete uložiť všetky dokumenty do jedného súboru alebo každý dokument samostatne.

V MS Word sa proces zlúčenia ukončí kliknutím na tlačidlo Nájsť a zlúčiť.



Z roletového menu je zrejmé, že všetky listy je možné vytlačiť a odoslať e-mailom, nie je však zrejmé, že všetky je možné uložiť do súboru. Ak chcete uložiť, musíte vybrať prvú položku - „Zmeniť jednotlivé dokumenty“. Tým sa otvorí nový dokument, v ktorom bude každé nové písmeno umiestnené na novej strane a tu je možné tento súbor uložiť.

Záver

A tak ste sa v tejto lekcii naučili, ako používať nástroj zlučovania na vytváranie dokumentov na základe šablóny. Stručne si napíšme postupnosť akcií:

  1. V tabuľkovom procesore je potrebné vytvoriť databázu, z ktorej sa budú brať údaje na vyplnenie polí.
  2. Je potrebné vytvoriť šablónu listu.
  3. Vykonajte zlúčenie a uložte výsledok.

A, priezviská v stĺpci B a profesie v kolónke C.

2. Vytvorte dokument programu Word (.doc alebo .docx)


(A), (B) A (C).

(A), (B) A (C) (A)- názov, (B)- priezvisko, (C)- povolanie.

nastavenie programy.

3. Vyberte cesty pre súbory a priečinky


Vyberte

4. Zadajte hárky a riadky požadovaných údajov


Údajové listy súboru Excel

Dátové riadky súboru Excel Údajové listy súboru Excel

1 .

Ak chcete, aby sa na tvorbe dokumentu podieľali všetky hárky a/alebo riadky vášho excelového súboru s údajmi, kliknite na príslušné tlačidlo s nápisom vpravo čísla(jeho nápis sa zmení na Všetky).

5. Nastavte šablónu pre pomenovanie nových súborov programu Word


Nastavte vzor pomenovania pre nové súbory slov:

Nová šablóna názvov súborov programu Word- toto je šablóna pre názvy nových dokumentov (súborov word) vygenerovaných programom. Tu vzor názvu obsahuje názvy stĺpcov excelového súboru, ktoré sú ohraničené zloženými zátvorkami: (A) A (B). Pri vytváraní nového dokumentu program nahradí všetko (A) A (B) zodpovedajúce hodnoty buniek zo súboru programu Excel - to bude názov nového dokumentu (súbor programu Word).

Na karte môžete nastaviť znaky v rámovaní nastavenie programy.

6. Kliknite na "Generovať"


Kliknite na tlačidlo Generovať a pokrok sa zobrazí na obrazovke. Vytvorí sa presne toľko dokumentov (súborov Word), koľko riadkov v excelovom súbore sa zúčastňuje na tvorbe.

7. Všetko


Všetky dokumenty (súbory Word) boli vytvorené a nachádzajú sa v priečinku špecifikovanom v Priečinok na uloženie nových súborov programu Word. všetky :)

Exwog- generátor správ z Excelu do Wordu pomocou šablóny

Bezplatný generátor súborov Word pomocou šablóny (súbor Word) na základe údajov súboru Excel

Funguje na Mac OS, Windows a Linux

Umožňuje vám nastaviť názvy nových vygenerovaných súborov slov

Umožňuje určiť hárky a riadky požadovaných údajov

Umožňuje určiť okolité znaky pre názvy stĺpcov programu Excel

Jednoduché použitie

Uložte si dáta vo formáte Excel (.xls a .xlsx) a generujte súbory Word (.doc a .docx) niekoľkými kliknutiami :)


Ako to funguje?

Pozrite sa na svoj excelový súbor


V tomto príklade excelový súbor obsahuje informácie o klientoch. Každý riadok zodpovedá konkrétnemu klientovi. Mená sú usporiadané v stĺpci A, priezviská v stĺpci B a profesie v kolónke C.

Kliknutím zobrazíte

Vytvorte dokument programu Word (.doc alebo .docx)


Kliknutím zobrazíte

Vytvorte „šablónu“ (súbor word) na generovanie nových dokumentov (súbory word). Text „šablóny“ tu obsahuje názvy stĺpcov excelového súboru, obklopené zloženými zátvorkami: (A), (B) A (C).

Program vygeneruje nové doklady podľa „šablóny“ nahradí všetky (A), (B) A (C) zodpovedajúce hodnoty buniek zo súboru programu Excel: (A)- názov, (B)- priezvisko, (C)- povolanie.

Na karte môžete tiež nastaviť znaky v rámovaní nastavenie programy.

Vyberte cesty pre súbory a priečinky


Vyberte cesty pre súbory a priečinky (tlačidlá označené Vyberte). V programe určíte nasledujúce cesty:

Excel súbor s údajmi (*.xls, *.xlsx)- toto je cesta k vášmu excelovému súboru s údajmi (informácie o zákazníkovi);

Súbor šablóny programu Word (*.doc, *.docx)- toto je cesta k vašej „šablóne“ (slovný súbor vytvorený v predchádzajúcom kroku);

Priečinok na uloženie nových súborov programu Word- toto je cesta k priečinku, do ktorého bude program ukladať nové vygenerované dokumenty.

Kliknutím zobrazíte

Zadajte hárky a riadky požadovaných údajov


Kliknutím zobrazíte

Zadajte počty hárkov a riadkov vášho excelového súboru s údajmi (informácie o zákazníkovi), pre ktoré chcete generovať dokumenty:

Údajové listy súboru Excel- počet listov vášho excelového súboru, ktoré sa budú podieľať na tvorbe nových dokumentov;

Dátové riadky súboru Excel- čísla riadkov hárkov (hárky uvedené v Údajové listy súboru Excel) vášho excelového súboru, ktorý sa bude podieľať na generovaní nových dokumentov. Na základe údajov každého zadaného riadku sa vytvorí samostatný dokument (súbor word).

Číslovanie listov a riadkov v programe začína na 1 .