Живееме во свет каде што развивачите на PHP мора да комуницираат операционен систем Windows. WMI (интерфејс за управување со Windows) Контроли на Windows) - еден таков пример е интеракцијата со Microsoft Office.

Во оваа статија, ќе разгледаме едноставна интеграција помеѓу Word и PHP: генерирање на документ на Microsoft Word заснован на полиња за внесување во HTML форма користејќи PHP (и неговата интероп екстензија).

Подготвителни чекори

Најпрво, да се увериме дека имаме поставено основна средина WAMP. Бидејќи Interop е присутен само на Windows, ни требаат нашите Апачи сервери инсталацијата PHP беа распоредени на Windows машина. Како таков, јас користам EasyPHP 14.1, кој е исклучително лесен за инсталирање и поставување.

Следниот чекор е да инсталирате Microsoft Office. Верзијата не е многу важна. Јас користам Microsoft Office 2013 Pro, но секоја верзија на Office постара од 2007 година треба да работи.

Исто така, треба да се увериме дека сме инсталирале библиотеки за развој на апликацијата Interop (PIA, Primary Interop Assemblies, Primary Interop Assemblies). Можете да го дознаете ова со отворање на Windows Explorer и одење до директориумот \assembly, и таму треба да видиме збир на инсталирани склопови:

Овде можете да го видите елементот Microsoft.Office.Interop.Word (подвлечен на сликата од екранот). Ова ќе биде изработката што ќе ја користиме во нашето демо. Обрнете посебно внимание на полињата „Име на собранието“, „Верзија“ и „Жетон за јавен клуч“. Наскоро ќе ги користиме во нашата PHP скрипта.

Овој директориум содржи и други склопови (вклучувајќи ја и целата фамилија на Office) достапни за употреба во нивните програми (не само за PHP, туку и за VB.net, C#, итн.).

Ако списокот на склопови не го вклучува целиот пакет Microsoft.Office.Interop, тогаш треба или повторно да го инсталираме Office со додавање на PIA или рачно да го преземеме пакетот од веб-локацијата на Microsoft и да го инсталираме. Погледнете ја оваа страница MSDN за подетални инструкции.

КоментарЗабелешка: Само дистрибуцијата PIA на Microsoft Office 2010 е достапна за преземање и инсталирање. Верзијата за склопување во овој пакет е 14.0.0, а верзијата 15 доаѓа само со Office 2013.

Конечно, треба да ја овозможите екстензијата php_com_dotnet.dll во php.ini и да го рестартирате серверот.

Сега можеме да преминеме на програмирање.

HTML форма

Бидејќи главниот дел од овој пример паѓа на страната на серверот, ќе создадеме едноставна страница со форма што ќе изгледа вака:

Имаме поле за текст за името, група радио копчиња за полот, лизгач за возраста и област за внесување текст за внесување порака, како и злогласното копче „Поднеси“.

Зачувајте ја оваа датотека како „index.html“ во директориумот за виртуелен домаќин за да може да се пристапи на URL како http://test/test/interop .

Серверски дел

Датотеката на управувачот на страната на серверот е главната цел на нашиот разговор. Прво, ќе го дадам целосниот код за оваа датотека, а потоа ќе го објаснам чекор по чекор.

видливо = точно; $fn = __DIR__ . "\\ template.docx"; $d = $w->Документи->Отвори($fn); ехо „Документот е отворен.


"; $flds = $d->Полиња; $count = $flds->Count; echo "Документот има полиња за $count.
"; ехо"
    "; $mapping = setupfields(); foreach ($flds како $index => $f) ( $f->Select(); $key = $mapping[$index]; $value = $inputs[$key]; if ($key == „род“) ( ако ($value == „(!LANG:m") $value = "Г."; else $value = "Госпоѓица."; } if($key=="printdate") $value= date ("Y-m-d H:i:s"); $w->Selection->TypeText($value); echo "!}
  • Доделување $index: $key на $value
  • ";) ехо"
"; ехо "Обработката е завршена!

"; ехо "Печатење, ве молиме почекајте...
"; $d->PrintOut(); sleep(3); ехо "Готово!"; $w->Quit(false); $w=null; функција setupfields() ( $mapping = array(); $mapping = "пол"; $mapping = "име"; $mapping = "возраст"; $mapping = "msg"; $mapping = "printdate"; врати $mapping; )

Откако ќе ги напишеме вредностите добиени од формуларот во променливата $inputs, а исто така создадовме празен елемент со клучот за датум за печатење (зошто го направивме ова - ќе разговараме подоцна), преминуваме на четири многу важни линии:

$assembly = "Microsoft.Office.Interop.Word, верзија=15.0.0.0, Култура=неутрална, PublicKeyToken=71e9bce111e9429c"; $class = "Microsoft.Office.Interop.Word.ApplicationClass"; $w = нов DOTNET ($ склопување, $класа); $w->видливо = точно;

COM манипулаторот на PHP бара класата да биде инстанцирана во „асемблето“. Во нашиот случај, работиме со Word. Ако ја погледнете првата слика од екранот, можете да го запишете целосниот потпис за склопување за Word:

  • „Име“, „Верзија“, „Жетон за јавен клуч“ се сите преземени од информации што може да се видат во „c:\Windows\assembly“ .
  • „Културата“ е секогаш неутрална

Класата на која сакаме да се повикаме е секогаш именувана како „име на склопување“ + „.ApplicationClass“.

Со поставување на овие два параметри, можеме да добиеме објект да работи со Word.

Овој објект може да остане во позадина, или можеме да го донесеме во производство со поставување на видливиот атрибут на true.

Следниот чекор е да се отвори документот што треба да се обработи и да се напише примерок од „документот“ во променливата $d.

Постојат неколку начини да се создаде содржина заснована на форма во документ.

Најлошото нешто што треба да се направи би било да се хард-кодира содржината на документот во PHP и потоа да се пренесе во документ Word. Силно препорачувам да не го правите тоа од следниве причини:

  1. Ја губите флексибилноста. За секоја промена на излезната датотека ќе бидат потребни промени во PHP кодот.
  2. Ова ја прекинува поделбата на контролата и погледот
  3. Примената на стилови на содржината на документите (порамнување, фонтови, стилови, итн.) во скрипта во голема мера ќе го зголеми бројот на линии на код. Програмски менување на стилови е премногу незгодно.

Друга опција би била да се користи Најдете и замени. PHP има добри вградени алатки за ова. Можеме да создадеме Word документ во кој ставаме етикети со специјални сепаратори, кои подоцна ќе бидат заменети. На пример, можеме да создадеме документ кој ќе го содржи следниот фрагмент:

а со помош на PHP лесно можеме да го замениме со содржината на полето „Име“ добиено од формуларот.

Ова е едноставно и не спасува од сите непријатни последици со кои се соочуваме при првиот метод. Треба само да одлучиме за точниот разграниувач, во тој случај завршуваме со користење на шема.

Го препорачувам третиот метод, а се базира на подлабоко познавање на Word. Ќе користиме полиња како местенка, а со користење на PHP код директно ќе ги ажурираме вредностите во полињата со соодветните вредности.

Овој пристап е флексибилен, брз и конзистентен со најдобрите практики на Word. Со него, исто така можете да избегнете пребарување на целосен текст во документот, што има добар ефект врз перформансите. Забележете дека ова решение има и недостатоци.

Word не поддржуваше именувани индекси за полиња од самиот почеток. Дури и ако имаме наведено имиња за креираните полиња, сепак треба да ги користиме нумеричките идентификатори на овие полиња. Ова исто така објаснува зошто треба да користиме посебна функција (поставки полиња) за да одговараме на индексот на полето и името на полето од формуларот.

Во оваа демо, ќе користиме документ со 5 полиња MERGEFIELD. Ќе го поставиме шаблонскиот документ на истото место како и нашиот управувач со скрипти.

Ве молиме имајте предвид дека полето за датум на печатење нема соодветно поле на формуларот. Затоа додадовме празен елемент за датум на печатење во низата $inputs. Без ова, скриптата сè уште ќе работи и ќе работи, но PHP ќе издаде предупредување дека индексот на датум на печатење недостасува од низата $inputs.

Откако ќе ги замениме полињата со нови вредности, го печатиме документот со

$d->PrintOut();

Методот PrintOut зема неколку опционални параметри, а ние ја користиме наједноставната негова форма. Ова ќе испечати една копија од документот на стандардниот печатач прикачен на уредот со Windows.

Можете исто така да го повикате PrintPreview за да го погледнете резултатот пред да го испечатите. Во целосно автоматско опкружување, секако ќе го користиме методот PrintOut.

Мора да почекате малку пред да излезете од апликацијата Word, бидејќи е потребно време за задачата за печатење да се стави во ред. Без одлагање(3), методот $w->Quit се извршува веднаш и работата не е во ред.

Конечно, повикуваме $w->Quit(false) , што ја затвора апликацијата Word што беше повикана од нашата скрипта. Единствениот параметар што му е предаден на методот е да ја зачувате датотеката пред да излезете. Направивме уредувања на документот, но не сакаме да ги зачуваме бидејќи ни треба чист образец за подоцнежна работа.

Откако ќе завршиме со кодот, можеме да ја вчитаме страницата со формулари, да пополниме некои вредности и да ја поднесеме. Сликите подолу го прикажуваат излезот од скриптата, како и ажурираниот Word документ:

Подобрена брзина на обработка и малку повеќе за PIA

PHP е лабаво пишуван јазик. COM објект од типот Object . Додека го пишуваме сценариото, немаме начин да го добиеме описот на објектот, било да е тоа апликација Word, документ или поле. Не знаеме какви својства има овој објект или кои методи ги поддржува.

Ова во голема мера ќе ја забави брзината на развој. За да се забрза развојот, би препорачал прво да пишувате функции во C#, а потоа да го преведете кодот во PHP. Можам да препорачам бесплатен IDE за развој на C# наречен „#develop“. Можете да ја најдете. Го претпочитам од Visual Studio бидејќи #develop е помал, полесен и побрз.

Мигрирањето на C# код во PHP не е толку страшно како што изгледа. Дозволете ми да ви покажам неколку линии во C#:

Word.Application w=new Word.Application(); w.Visible=true; String path=Application.StartupPath+"\\template.docx"; Word.Document d=w.Documents.Open(path) as Word.Document; Збор.Полиња flds=d.Полиња; intlen=flds.Count; foreach (Word.Поле f во flds) ( f.Select(); int i=f.Index; w.Selection.TypeText("..."); )

Можете да видите дека кодот C# е многу сличен со PHP-кодот што го покажав претходно. C# е силно пишуван јазик, така што во овој пример, можете да видите неколку cast оператори, а исто така треба да наведете тип за променливи.

Со одредување на типот на променливата, можете да уживате во појасен код и автоматско пополнување, а брзината на развој е значително зголемена.

Друг начин да се забрза развојот на PHP е да повикате макро во Word. Ја извршуваме истата низа на дејства, а потоа ја зачувуваме како макро. Макрото е напишано во Visual Basic, што исто така лесно се преведува во PHP.

И, што е најважно, документацијата на Microsoft Office PIA, особено документацијата за именскиот простор на секоја апликација на Office, е најдеталната референца. Најкористените три апликации се:

  • 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

Заклучок

Во оваа статија, ви покажавме како да пополните документ Word со податоци користејќи ги библиотеките PHP COM и интероперабилноста на Microsoft Office.

Windows и Office се широко користени во секојдневниот живот. Познавањето на моќта на Office/Window и PHP ќе биде корисно за секој развивач на PHP и Windows.

Наставката PHP COM ви ја отвора вратата да ја користите оваа комбинација.

Ја продолжуваме темата за работа со форми во Word што ја започнавме порано. Во претходните написи, обрасците ги гледавме само од перспектива на „моќен корисник“, т.е. создадовме документи кои се погодни за рачно пополнување. Денес, сакам да предложам проширување на оваа задача и обид за користење на механизмот за контрола на содржината за генерирање документи.

Пред да се фатиме за нашата непосредна задача, сакам да кажам неколку зборови за тоа како податоците за контролите на содржината се складираат во документите Word (намерно ќе испуштам како тие се врзани со содржината на документот засега, но се надевам дека ќе се вратам до ова некаде во следните статии).

Легитимното прашање е што е itemProps1.xmlи слични компоненти? Овие компоненти складираат описи на изворите на податоци. Најверојатно, како што замислуваа програмерите, покрај xml-датотеките вградени во документот, требаше да користи и други, но досега само овој метод е имплементиран.

Што ни е корисно itemPropsX.xml? Фактот дека тие наведуваат xml шеми (нив Простор со име на цел) кои се користат во родител ставкаX.xml. Ова значи дека ако сме вклучиле повеќе од еден прилагоден xml во документот, тогаш за да го најдеме вистинскиот, треба да поминеме низ itemPropsX.xmlкомпоненти и пронајдете го саканото коло, а со тоа и посакуваното ставкаX.xml.

Сега уште еден момент. Нема рачно да ги анализираме односите помеѓу компонентите и да ги бараме вистинските користејќи го само основното API за пакување! Наместо тоа, ќе користиме Open XML SDK (неговите изданија се достапни преку NuGet). Се разбира, претходно не кажавме ниту збор за ова API, но за нашата задача е потребен минимум и целиот код ќе биде прилично транспарентен.

Па, главниот вовед е завршен, можете да продолжите на примерот.

Според востановената традиција, ќе го земеме истиот „Извештај од состанок“ што го нацртавме во статијата. Дозволете ми да ве потсетам дека вака изгледаше шаблонот за документ:

И така, XML на кој беа врзани полињата на документот

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

Чекор 1. Направете модел на податоци

Всушност, нашата задача не е само да генерираме документ, туку да создадеме (барем во нацрт верзија) удобна алатка за употреба и од развивачот и од корисникот.

Затоа, ќе го декларираме моделот како структура на C# класи:

Јавна класа MeetingNotes ( јавна MeetingNotes () ( Учесници = нова листа (); Одлуки = нов Список (); ) јавен стринг Предмет ( добиј; постави; ) јавен ДатумВреме Датум ( добија Учесници ( добија; постави; ) јавна листа Одлуки ( get; set; ) ) јавна класа Одлука ( јавен стринг Проблем ( get; set; ) јавен стринг Решение ( get; set; ) јавен стринг Одговорен ( get; set; ) public DateTime ControlDate ( get; set; ) ) public Учесник во класата (јавна низа Име (добие; постави;))

Во голема мера, ништо посебно, освен што се додадени атрибути за контрола на серијализацијата на XML (бидејќи имињата во моделот и потребниот XML се малку различни).

Чекор 2: Сериизирајте го горенаведениот модел на XML

Задачата е, во принцип, тривијална. Она што се нарекува „земи го нашиот омилен XmlSerializer и оди“, ако не за еден но

За жал, во сегашна верзијаКанцеларијата, очигледно, има грешка, која е како што следува: ако е во сопствен xml преддекларирање на главниот именски простор (оној од кој Word треба да земе елементи за прикажување), декларирајте уште неколку, потоа повторените контроли за содржина почнуваат да се прикажуваат погрешно (се прикажуваат само онолку елементи колку што имало во самиот шаблон - т.е. делот што се повторува не работа).

Оние. Еве го xml што работи:

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

и овој исто така:

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

а овој го нема:

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

Се обидов да поднесам бубачка до поддршката на Microsoft на Connect, но поради некоја причина ми беше одбиен пристапот за поднесување грешки преку Office. Ниту една дискусија на форумот на МСДН не помогна.

Во принцип, потребниот заобиколен маневар. Ако рачно формиравме XML, немаше да има проблеми - сè ќе направевме сами. Меѓутоа, во овој случај, навистина сакам да го користам стандардниот XmlSerializer, кој стандардно додава неколку од неговите именски простори на излезниот XML, дури и ако овие простори со имиња не се користат.

Ќе направиме целосно потиснување на излезот од нашите сопствени именски простори во XmlSerializer. Навистина, овој пристап ќе функционира само ако навистина не му требаат (во спротивно тие сè уште ќе бидат додадени и само ПРЕД нашите).

Всушност, целиот код (под услов променливата состанок Белешкисодржи претходно наполнет објект од типот MeetingNotes):

var serializer = нов XmlSerializer(тип на (MeetingNotes));
var serializedDataStream = нов MemoryStream();

var namespaces = нов XmlSerializerNamespaces();
namespaces.Add(“” , “” );

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

Чекор 3. Добиениот XML го внесуваме во Word документ.

Овде го правиме следново:

  • копирајте го шаблонот и отворете ја копијата
  • пронајдете го саканиот прилагоден xml во него (пребарувајте по именски простор „урна: MeetingNotes“)
  • ја заменуваме содржината на компонентата со нашата XML

Датотека.Копија (Име на шаблон, Име на документот резултат, точно ); употреб () .Any(sr => sr.Uri.Value == "(!LANG:urn:MeetingNotes"!}

Сите ние се занимаваме со текстови, вака или онака. Понекогаш има потреба да се генерира голема или не многу голема количина на текст за некоја задача, на пример, да се позанимавам со форматирање, но нема текст при рака, премногу е мрзливо да го напишете сами. Што да се прави? Одговорот е едноставен: користете го вградениот генератор на случаен текст во Word!

Во уредникот на Microsoft Word, можете брзо и лесно да генерирате текст користејќи специјални команди. Ќе го користам Word 2007 како морско прасе.Овие команди треба да работат во сите верзии на Word. Ќе ви кажам за три методи за генерирање текст.

Метод 1: Користење на rand()

Функцијата rand() вметнува локализиран текстуален примерок, 3 параграфи од 3 реченици. Отворете го вашиот Word, ставете го курсорот каде што наскоро ќе се појави текстот и внесете ја командата:

и притиснете Enter. Самата функција rand ќе исчезне и наместо тоа ќе се појават 3 параграфи од текстот:

Но, тоа не е се. Ако ви треба многу текст, тогаш можете да ја користите функцијата rand со дополнителни аргументи, како ова:

=ранд(x,y)

каде" x' значи број на ставови и ' y» е бројот на реченици во секој пасус. На пример, =ранд (20,5)ќе вметне 20 параграфи со по пет фрази. НО =Ранд(7)ќе вметне 7 ставови од по 3 реченици.

Метод 2: Користење lorem()

За да го вметнете стариот добар Lorem Ipsum како примерок - користете ја функцијата lorem (). Внесете ја следнава команда и притиснете Enter:

И го добиваме овој целосно латински текст

Функцијата lorem() исто така лесно прифаќа дополнителни аргументи, како rand(), во форма на голем број параграфи и реченици. Без аргументи, функцијата стандардно вметнува 3 параграфи со по 3 реченици.

Метод 3. Функцијата rand.old().

Употребата е слична на претходните команди:

=rand.old()

и притиснете Enter.

Функцијата rand.old() е оставена за компатибилност со старата канцеларија, до и вклучувајќи ја 2003 година. Начинот на примена е ист како претходните два, само текстот ќе се состои од истите фрази „Јадете повеќе од овие меки француски кифлички и пијте чај“. Оваа фраза е позната на сите кои понекогаш мораа да работат со фонтови.

Можете да пренесувате аргументи како во првите два методи.

Тоа е се, текстовите се генерирани, сега можете да јадете повеќе од овие меки француски кифлички и да пиете чај :)

Дали можевте да вметнете текст користејќи ги горенаведените функции?

Еднаш, по сумирањето на резултатите од Олимпијадата, кога учесниците требаше да испратат писма со резултатите од положените (или не положените) предмети, забележав дека девојката седи и ги внесува резултатите од испитот, името на ученикот и други информации во шаблонот за писмо со нејзините раце. Пред неа лежеа неколку листови испечатени од Excel со имиња и оценки. Copy-Paste, Ctrl + C - Ctrl + V, пренесување на целото име од номинатив во генитив, и така веќе е завршена работа со половина од првиот од трите листови со податоци. Што мислите, колку долго може да седи мирно и да ги копира податоците, а потоа да го проверува резултатот? Мислам дека долго време, и би имало доста грешки. Но, тогаш таа сепак мораше да потпишува поштенски коверти... Ми беше жал за нејзиното време и за неколку минути покажав како овој процес може да се автоматизира со едноставни средства. По кратка екскурзија нејзината работа била завршена за 20 минути.

Во оваа лекција, ќе ви покажам како брзо да креирате документи (писма, покани) со минимално време. AT различни верзиијазици, овој опишан процес се нарекува поинаку. Значи, на руски е „Спојување“, а на англиски - „Спојување“.

Се надевам дека „писмата на среќата“ од пензиски фонд, даночните известувања се креираат на ист начин :)

Алатки

За да креираме документи, потребен ни е OpenOffice Writer. Во него ќе создадеме шаблон за писмо. Ќе ви треба и OpenOffice Calc. Во него ќе создадеме база на податоци со имињата и адресите на оние лица кои, на пример, сакаме да ги поканиме на забава. Наместо програми од пакетот OpenOffice, лесно може да се користат MS Word и Excel. Базата на податоци лесно може да лежи во MS Access. И така, ајде да започнеме.

Создавање бази на податоци

Базата на податоци не е ништо повеќе од табела во MS Excel или OpenOffice Calc, каде што податоците се распоредени во колони и првиот ред се користи за именување на колоните. Да ги започнеме, на пример, колоните „име“, „град“, „поштенски код“, „адреса“. Внесете ги податоците и зачувајте ја датотеката на дискот.



Други извори исто така може да се користат како бази на податоци, како што е адресар на Outlook или база на податоци на MS Access.

Направете шаблон за писмо

Со креирањето на шаблон за писмо, ситуацијата е малку посложена. Бидејќи податоците од табелата (нашата база на податоци) ќе бидат заменети во шаблонот каков што е, тогаш писмото мора да биде соодветно напишано. Ако вашето полно име е во номинативна буква во вашата база на податоци, тогаш веројатно нема да можете да го користите ова поле во жалбата „Почитувани,<ФИО>!" а за пликот во редот „До:<ФИО>“. Во вториот случај, целото име ќе изгледа малку несмасно.

Кога составувате шаблон за писмо, препорачувам да започнете со пишување писмо до некои вистинска личност. Можеш за себе. Потоа во него означете ги податоците што ќе ги земете од базата и заменете ги со соодветните полиња. Пред да го замените избраниот текст со поле, ви препорачувам да обрнете внимание со која буква треба да започнува полето во базата на податоци (мали или големи). Се разбира, можете веднаш да креирате шаблон со полињата, но тогаш можеби нема да забележите некои грешки, како што се недоследности во случаите.



Веќе во горниот шаблон, јасно е дека ни треба полно име во генитив и поле што ги содржи само првото и средното име. Со првото поле можеме да го замениме „До“ со „Примател“, а потоа целосното име во номинативната буква ќе ни одговара совршено. Со второто поле, сè е нешто покомплицирано и ќе треба да создадеме уште една колона во базата на податоци и да ја пополниме со соодветните податоци. Во една од следните лекции ќе ви кажам како да го направите ова автоматски, но засега ќе претпоставиме дека веќе имаме такво поле.

За да вметнете поле и да го поврзете шаблонот со базата на податоци, мора да ја извршите следната низа на дејства. Изберете база на податоци во OpenOffice Writer



и кликнете „Дефинирај“.



Потоа внесете го полето од поврзаната база на податоци на вистинското место. За да го направите ова, притиснете Ctrl + F2 или изберете „Полиња“ и „Друго“ од менито „Вметни“. Во прозорецот што се отвора, изберете го табулаторот „Бази на податоци“, изберете „Полиња за спојување пошта“ во типот на полето, изберете го соодветното поле од базата на податоци и кликнете на „Вметни“. Во овој прозорец може да се избере и самата база на податоци.



Откако ќе се вметне едно поле, без да го затворите тековниот прозорец, изберете го текстот што треба да се замени со следното поле, изберете го полето и повторно кликнете на „Вметни“. И така за секое од полињата.

За MS Word, ситуацијата е нешто слична и можеби попогодна. Откако ќе креирате табела во MS Excel, стартувајте го MS Word и одете на табулаторот "Mailouts". На ова јазиче, можете да ги видите трите неопходни чекори: „Започнете го спојувањето“, „Составете го документот и вметнете полиња“ и „Заврши“. Постои и среден чекор „Прикажи резултат“, но тој е опционален.

И така, работата започнува со избор на документ. Може да бидат букви, налепници, обичен Word документ. Можете исто така да го стартувате волшебникот за спојување токму овде, кој ќе ве води низ сите чекори во процесот. Следниот чекор е да го изберете примачот, односно базата на податоци. Овде можете да изберете готова база на податоци (на пример, табелата MS Excel создадена во претходната фаза) или да креирате нова листа. Откако ќе се избере списокот, копчињата „Вметни поле за спојување“, „Уреди список на примачи“ итн. записи неопходни за спојување.







При вметнување полиња, сметам дека е погодно да ги истакнам сите полиња во сива боја со кликнување на копчето „Избери спојување полиња“. Во спротивно, ако има многу такви полиња, тогаш тие може да се изгубат во текстот.

И така, шаблонот е подготвен.

Генерирање на букви

Последната фаза е генерирање на букви. Во OpenOffice, за ова, во менито "Tools", изберете "Mail Merge Wizard ..." и поминете низ сите предложени чекори за да го комбинирате нашиот образец со базата на податоци.





Во полето за дијалог, гледаме дека од предложените 8 точки, не мора да изведуваме некои точки. Значи, ние веќе го создадовме документот и не треба да го уредуваме, исто така веќе го вметнавме блокот за адреси. Но, да одиме по ред.

Прво, избираме да креираме букви врз основа на тековниот документ и кликнете „Следно“ на дното на прозорецот. Втората точка е дали ќе го имаме ова хартиено писмо или е-пошта. За да може буквата да се зачува во датотека, изберете ја првата. Кликнете на „Следно“. Во третиот пасус, ни е понудено да создадеме блок за адреси, но бидејќи го создадовме рачно, ги отштиклираме сите полиња и продолжуваме на следниот чекор. Овде ни се нуди да вметнеме жалба, но исто така веќе ја имаме, па кликнете „Следно“. Во шестиот пасус, можете да го уредите документот, да го погледнете документот со полињата вметнати од базата на податоци и, доколку е потребно, да исклучите некои полиња.



На чекор 7, се предлага да се уреди секоја од датотеките создадени како резултат на поврзување на шаблонот со базата на податоци. И, конечно, на последниот, чекор 8, можете да изберете што да правите со примените документи. Можете да зачувате, печатите или испраќате по е-пошта. Во овој случај, можете да ги зачувате сите документи во една датотека или секој документ посебно.

Во MS Word, процесот на спојување се завршува со кликнување на копчето „Најди и спојувај“.



Од паѓачкото мени, очигледно е дека сите букви можат да се испечатат и испратат преку е-пошта, но не е очигледно дека сите тие можат да се зачуваат во датотека. За да зачувате, изберете ја првата ставка - "Промени поединечни документи". Ова ќе отвори нов документ во кој секоја нова буква ќе биде лоцирана на нова страница, и овде оваа датотека веќе може да се зачува.

Заклучок

И така, во оваа лекција научивте како да ја користите алатката за спојување за да креирате документи врз основа на шаблон. Ајде накратко да ја запишеме низата на дејства:

  1. Потребно е да се креира база на податоци во процесорот за табеларни пресметки, од која ќе се земаат податоци за пополнување на полињата.
  2. Треба да креирате шаблон за писмо.
  3. Направете го спојувањето и зачувајте го резултатот.

А, презимиња во колона Би професиите во графата В.

2. Создадете Word документ (.doc или .docx)


(А), (Б)и (C).

(А), (Б)и (C) (А)- име, (Б)- презиме, (C)- професија.

Поставкипрограми.

3. Изберете патеки за датотеки и папки


Изберете

4. Поставете ги листовите и редовите на саканите податоци


Датотеки на Excel

Редови со податоци за датотеки на Excel Датотеки на Excel

1 .

Ако сакате сите листови и/или редови од вашата ексел датотека со податоци да учествуваат во формирањето на документот, кликнете на соодветното копче десно со наслов броеви(неговиот натпис ќе се промени во Сите).

5. Поставете го шаблонот за име за нови датотеки со зборови


Поставете го шаблонот за име за нови датотеки со зборови:

Шаблон за имиња на нови датотеки со зборовие шаблон за имињата на новите документи (word-датотеки) генерирани од програмата. Овде, шаблонот за име ги содржи имињата на колоните на датотеката Excel, врамени со кадрави загради: (А)и (Б). Кога генерирате нов документ, програмата ќе ги замени сите (А)и (Б)соодветните вредности на ќелиите од датотеката excel - ова ќе биде името на новиот документ (датотека Word).

Можете да поставите свои гранични знаци на јазичето Поставкипрограми.

6. Кликнете на „Генерирај“


Кликнете на копчето Генерирајтеи напредокот ќе се појави на екранот. Ќе се креираат документи (ворд-датотеки) онолку колку линии од ексел-датотеката се вклучени во формирањето.

7. Сè


Сите документи (word-датотеки) се создадени и се наоѓаат во папката наведена во Папка за зачувување на новите Word-датотеки. Сè :)

Ексгог- генератор на извештај за шаблони од ексел до збор

Бесплатен генератор на датотеки Word по шаблон (Word-датотека) врз основа на податоци за датотеката Excel

Работи на Mac OS, Windows и Linux

Ви овозможува да ги поставите имињата на новите генерирани датотеки со зборови

Ви овозможува да поставите листови и редови со потребните податоци

Ви овозможува да поставите гранични знаци за имињата на колоните во Excel

Лесен за користење

Чувајте ги вашите податоци во формат Excel (.xls и .xlsx) и генерирајте Word датотеки (.doc и .docx) со неколку кликања :)


Како работи?

Погледнете ја вашата ексел датотека


Во овој пример, датотеката Excel содржи информации за клиентите. Секоја линија одговара на одреден клиент. Имињата се во колона А, презимиња во колона Би професиите во графата В.

Кликнете за да видите

Создајте документ ворд (.doc или .docx)


Кликнете за да видите

Направете „шаблон“ (word-датотека) за генерирање на нови документи (word-датотеки). Овде текстот на „шаблонот“ ги содржи имињата на колоните од датотеката excel, врамени со кадрави загради: (А), (Б)и (C).

Програмата ќе генерира нови документи според „шаблонот“ што ги заменува сите (А), (Б)и (C)соодветните вредности на ќелиите од датотеката Excel: (А)- име, (Б)- презиме, (C)- професија.

Можете исто така да поставите свои гранични знаци на јазичето Поставкипрограми.

Изберете патеки за датотеки и папки


Изберете патеки за датотеки и папки (копчињата означени Изберете). Во програмата, ги одредувате следните патеки:

Excel датотека со податоци (*.xls, *.xlsx)- ова е патеката до вашата ексел датотека со податоци (информации за клиентите);

Датотека со шаблон Word (*.doc, *.docx)е патеката до вашиот „шаблон“ (датотеката со зборови создадена во претходниот чекор);

Папка за зачувување на новите Word-датотеки- ова е патеката до папката каде што програмата ќе ги зачува новогенерираните документи.

Кликнете за да видите

Поставете ги листовите и редовите на саканите податоци


Кликнете за да видите

Поставете ги броевите на листови и линии на вашата ексел датотека со податоци (информации за клиенти) на кои сакате да генерирате документи:

Датотеки на Excel- броеви на листови од вашата ексел-датотека кои ќе бидат вклучени во формирањето на нови документи;

Редови со податоци за датотеки на Excel- броеви на линии на листови (листови наведени во Датотеки на Excel) од вашата ексел датотека која ќе биде вклучена во формирањето на нови документи. Врз основа на податоците од секоја наведена линија, ќе се креира посебен документ (ворд-датотека).

Нумерирањето на листови и линии во програмата започнува со 1 .