Как да генерирате документи в word. Програмно генериране на формулярни документи в Word. Създайте шаблон на документ на Word

Живеем в свят, в който PHP разработчиците трябва да взаимодействат с операционната система от време на време. Windows система. WMI (Интерфейс за управление на Windows) Windows контроли) - един такъв пример е взаимодействието с Microsoft Office.

В тази статия ще разгледаме проста интеграция между Word и PHP: генериране документ на MicrosoftБазирани на Word полета за въвеждане в HTML формуляр, използвайки PHP (и неговото разширение за взаимодействие).

Подготвителни стъпки

Първо, нека се уверим, че имаме настроена основна WAMP среда. Тъй като Interop присъства само в Windows, ние се нуждаем от нашия сървър Apache и PHP инсталация, за да бъдат внедрени на машина с Windows. Като такъв използвам EasyPHP 14.1, който е изключително лесен за инсталиране и настройка.

Следващата стъпка е да инсталирате Microsoft Office. Версията не е много важна. Използвам Microsoft Office 2013 Pro, но всеки Офис версияпо-стари от 2007 г. трябва да работят.

Също така трябва да се уверим, че сме инсталирали библиотеки за разработване на приложението за взаимодействие (PIA, първични сглобки за взаимодействие, първични сглобки за взаимодействие). Можете да разберете, като отворите Windows Explorer, и отиване в директорията \assembly и там трябва да видим набор от инсталирани сглобки:

Тук можете да видите елемента Microsoft.Office.Interop.Word (подчертан на екранната снимка). Това ще бъде компилацията, която ще използваме в нашата демонстрация. Моля, обърни внимание Специално вниманиев полетата „Име на сборка (Име на сборка)“, „Версия (Version)“ и „Жетон за публичен ключ (Маркер за публичен ключ)“. Скоро ще ги използваме в нашия 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); echo "Документът е отворен.


"; $flds = $d->Полета; $count = $flds->Count; echo "Документът има $count полета.
"; ехо "
    "; $mapping = setupfields(); foreach ($flds as $index => $f) ( $f->Select(); $key = $mapping[$index]; $value = $inputs[$key]; if ($key == "пол") ( if ($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
  • "; ) ехо "
"; echo "Обработката завършена!

"; echo "Отпечатване, моля изчакайте...
"; $d->PrintOut(); sleep(3); echo "Готово!"; $w->Quit(false); $w=null; функция setupfields() ( $mapping = array(); $mapping = "gender"; $mapping = "name"; $mapping = "age"; $mapping = "msg"; $mapping = "printdate"; return $mapping; )

След като записахме стойностите, получени от формуляра, в променливата $inputs и създадохме празен елемент с ключа printdate (защо направихме това - ще обсъдим по-късно), преминаваме към четири много важни реда:

$assembly = "Microsoft.Office.Interop.Word, Версия=15.0.0.0, Култура=неутрална, PublicKeyToken=71e9bce111e9429c"; $class = "Microsoft.Office.Interop.Word.ApplicationClass"; $w = нов DOTNET($assembly, $class); $w->visible = true;

COM манипулаторът на PHP изисква класът да бъде създаден в рамките на "сглобката". В нашия случай работим с Word. Ако погледнете първата екранна снимка, можете да запишете пълния подпис на сглобката за Word:

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

Класът, към който искаме да се позоваваме, винаги се нарича „име на сборка“ + „.ApplicationClass“.

Като зададем тези два параметъра, можем да получим обект, който да работи с Word.

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

Следващата стъпка е да отворите документа, който ще се обработва, и да запишете екземпляр на „документа“ в променливата $d.

Има няколко начина за създаване на базирано на формуляр съдържание в документ.

Най-лошото нещо, което можете да направите, е да кодирате твърдо съдържанието на документа в PHP и след това да го изведете в документ на Word. Горещо препоръчвам да не правите това поради следните причини:

  1. Губите гъвкавост. Всички промени в изходния файл ще изискват промени в PHP кода.
  2. Това нарушава разделянето на контрол и изглед
  3. Прилагането на стилове към съдържанието на документа (подравняване, шрифтове, стилове и т.н.) в скрипт ще увеличи значително броя на редовете код. Програмната промяна на стилове е твърде тромава.

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

и с помощта на PHP лесно можем да го заменим със съдържанието на полето „Име“, получено от формата.

Това е просто и ни спасява от всички неприятни последствия, с които се сблъскваме при първия метод. Просто трябва да вземем решение за правилния разделител, в който случай в крайна сметка ще използваме шаблон.

Препоръчвам третия метод и той се основава на по-задълбочено познаване на Word. Ще използваме полета като контейнери и с помощта на PHP код директно ще актуализираме стойностите в полетата със съответните стойности.

Този подход е гъвкав, бърз и в съответствие с най-добрите практики на Word. С него можете да избегнете и пълнотекстово търсене в документа, което се отразява добре на производителността. Имайте предвид, че това решение има и недостатъци.

Word не поддържа наименувани индекси за полета от самото начало. Дори и да сме посочили имена за създадените полета, пак трябва да използваме цифровите идентификатори на тези полета. Това също обяснява защо трябва да използваме отделна функция (setupfields), за да съпоставим индекса на полето и името на полето от формуляра.

В тази демонстрация ще използваме документ с 5 полета MERGEFIELD. Ще поставим шаблонния документ на същото място като нашия манипулатор на скриптове.

Моля, обърнете внимание, че полето за дата на печат няма съответстващо поле във формуляра. Ето защо добавихме празен елемент printdate към масива $inputs. Без това скриптът пак ще работи и ще работи, но PHP ще издаде предупреждение, че индексът на printdate липсва в масива $inputs.

След като заменим полетата с нови стойности, отпечатваме документа с

$d->Разпечатване();

Методът 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=ново Word.Application(); w.Visible=вярно; String path=Application.StartupPath+"\\template.docx"; Word.Document d=w.Documents.Open(path) като 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("..."); )

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

Като посочите типа на променливата, можете да се насладите на по-ясен код и автоматично довършване, а скоростта на разработка се увеличава значително.

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

И най-важното, документацията на Office PIA на Microsoft, особено документацията за пространството от имена на всяко приложение на 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 2007. Тези команди трябва да работят във всички версии на Word. Ще ви разкажа за три метода за генериране на текст.

Метод 1: Използване на rand()

Функцията rand() вмъква локализиран текстов пример, 3 абзаца от 3 изречения. Отворете вашия Word, поставете курсора си там, където скоро ще се появи текстът, и въведете командата:

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

Но това не е всичко. Ако имате нужда от много текст, тогава можете да използвате функцията rand с допълнителни аргументи, като това:

=rand(x,y)

където " х„означава броя на параграфите и“ г» е броят на изреченията във всеки параграф. Например, =rand(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 г. включително. Методът на приложение е същият като предишните два, само текстът ще се състои от същите фрази „Яжте повече от тези меки френски рулца и пийте чай“. Тази фраза е известна на всички, които понякога трябваше да работят с шрифтове.

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

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

Успяхте ли да вмъкнете текст с горните функции?

В предишните статии от поредицата „Автоматизиране на попълването на документи“ говорих за това как да създадете потребителски интерфейс на приложение, да организирате валидиране на въвеждане и да получите число с думи, без да използвате VBA код. В тази последна статия ще говорим за магия - прехвърляне на всички необходими стойности от работна книга на Excel в документ на Word. Нека ви покажа крайния резултат:

Описание на механизма

Като начало ще опиша в общи линии как точно ще се прехвърлят данните в Word документ. На първо място, имаме нужда от шаблон на документ на Word, съдържащ всички маркировки, таблици и тази част от текста, която ще остане непроменена. В този шаблон трябва да определите местата, където ще бъдат заменени стойностите от работната книга на Excel - най-удобният начин да направите това е с помощта на отметки. След това трябва да подредите данните в Excel така, че да отговарят на шаблона на Word и не на последно място да напишете самата процедура за прехвърляне на VBA.

И така, най-напред.

Създайте шаблон на документ на Word

Тук всичко е изключително просто - създаваме обикновен документ, въвеждаме и форматираме текста, като цяло постигаме, за да получим необходимата форма. На местата, където ще е необходимо да замените стойности от Excel, трябва да създадете отметки. Това става по следния начин:

По този начин ще трябва да създадете всички отметки, тоест да маркирате всички места, където ще бъдат вмъкнати данни от Excel. Полученият файл трябва да бъде записан като "MS Word Template" с помощта на елемента от менюто "File" -> "Save As...".

Подготовка на данни в Excel

За удобство реших да поставя всички данни, които трябва да бъдат прехвърлени в документа на Word, на отделен работен лист, наречен Bookmarks - отметки. Този лист има две колони: първата съдържа имената на отметките (точно както са именувани в документа на Word), а втората съдържа съответните стойности, които трябва да бъдат прехвърлени.

Някои от тези стойности се получават директно от листа за въвеждане на данни, а някои са от помощни таблици, разположени на листа за поддръжка. В тази статия няма да анализирам формулите, които изчисляват желаните стойности, ако нещо не е ясно, задавайте въпроси в коментарите.

На този етап е важно да посочите правилно всички имена на отметките - от това зависи правилността на прехвърлянето на данни.

Процедура по прехвърляне

Но това е най-интересното. Има две опции за изпълнение на кода за мигриране на данни:

  • Кодът се изпълнява в работна книга на Excel, данните се предават на Word една стойност наведнъж и веднага се поставят в документа.
  • Кодът се изпълнява в отделен документ на Word, всички данни се прехвърлят от Excel наведнъж.

От гледна точка на скоростта на изпълнение, особено при голям брой отметки, втората опция изглежда много по-привлекателна, но изисква по-сложни действия. Това е този, който използвах.

Ето какво трябва да се направи:

  • Създайте шаблон на документ на Word с активирани макроси.Този шаблон ще съдържа изпълнимия VBA код.
  • В създадения шаблон трябва да поставите програма, написана на VBA.За да направите това, когато редактирате шаблон, натиснете клавишната комбинация Alt + F11 и въведете програмния код в прозореца на редактора на Visual Basic, който се отваря.
  • В работна книга на Excel напишете код, който извиква процедурата за попълване от новосъздадения шаблон на Word.

Няма да предоставям текста на процедурата в статията - той може лесно да се види във файла FillDocument.dotm, който се намира в папката Template в примерния архив.

Как можете да използвате всичко това, за да разрешите конкретния си проблем?

Разбирам, че на думи всичко изглежда много просто, но какво се случва на практика? Предлагам ви просто да използвате готовия вариант. Изтеглете архива с примера, в работна книга на Excel, натиснете клавишната комбинация Alt + F11, за да отворите редактора на Visual Basic и прочетете всички мои коментари за програмата. За да промените програмата според вашите нужди, трябва само да промените стойността на няколко константи, те се поставят в самото начало на програмата. Можете свободно да копирате целия текст на програмата във вашия проект.

Архивна структура

Архивът, прикачен към тази статия, съдържа няколко файла.

Основният файл е работна книга на Excel, наречена „Генериране на потвърждения“. В тази работна книга има 4 работни листа, от които се показват само два: "Вход" - лист за въвеждане на данни и "База данни" - архив на всички въведени документи.

Папката Шаблони съдържа шаблони на документи на Word. Единият от тях е шаблон, съдържащ програма за попълване на отметки, а вторият е формуляр за попълване. Можете да използвате шаблона с програмата без промени, но формулярът за попълване, разбира се, ще трябва да бъде променен в съответствие с вашите нужди.

Как да преработим примера "за себе си"?

  1. Подгответе шаблон на Word документ, който да бъде попълнен. Създайте всички необходими отметки в него и го запазете като "MS Word шаблон".
  2. Копирайте файла FillDocument.dotm от архива, прикачен към тази статия, в папката с подготвения шаблон. Този файл отговаря за попълването на отметките на шаблона и нищо не трябва да се променя в него.
  3. Подгответе работна книга на Excel за въвеждане на данни. От вас зависи да решите дали ще има някакъв "разширен" потребителски интерфейс и ще извършва различни трудни изчисления. Основното е, че съдържа работен лист с таблица на съответствие между името на отметката в шаблона на Word и стойността, която трябва да бъде заменена.
  4. Вмъкнете програмния код на VBA от примерния файл в подготвената работна книга. Заменете всички константи според вашия проект.
  5. Тествайте за правилна работа.
  6. Насладете се активно!

А, фамилии в колона би професии в графата ° С.

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


(А), (Б)и (° С).

(А), (Б)и (° С) (А)- име, (Б)- фамилия, (° С)- професия.

Настройкипрограми.

3. Изберете пътища за файлове и папки


Изберете

4. Задайте листовете и редовете на желаните данни


Таблици с данни на Excel файл

Редове с данни на Excel файл Таблици с данни на Excel файл

1 .

Ако искате всички листове и/или редове от вашия excel файл с данни да участват във формирането на документа, щракнете върху съответния бутон вдясно с надпис числа(надписът му ще се промени на всичко).

5. Задайте шаблон за име за нови word файлове


Задайте шаблон за име за нови файлове с думи:

Нов шаблон за имена на word файловее шаблон за имена на нови документи (word-файлове), генерирани от програмата. Тук шаблонът за име съдържа имената на колоните на excel файла, оградени с фигурни скоби: (А)и (Б). При генериране на нов документ, програмата ще замени всички (А)и (Б)съответните стойности на клетката от excel файла - това ще бъде името на новия документ (word файл).

Можете да зададете свои собствени гранични знаци в раздела Настройкипрограми.

6. Щракнете върху „Генериране“


Щракнете върху бутона Генерирайи напредъкът ще се покаже на екрана. Документи (word-файлове) ще бъдат създадени точно толкова редове от excel-файла, които участват във формирането.

7. Всичко


Всички документи (word-файлове) са създадени и се намират в папката, посочена в Папка за запазване на новите word файлове. Всичко :)

Exwog- шаблонен генератор на отчети от excel към word

Безплатен генератор на Word файлове по шаблон (Word файл), базиран на данни от Excel файл

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

Позволява ви да задавате имената на новосъздадените файлове с думи

Позволява ви да задавате листове и редове с необходимите данни

Позволява ви да зададете гранични знаци за имена на колони в Excel

Лесен за използване

Съхранявайте данните си във формат на Excel (.xls и .xlsx) и генерирайте Word файлове (.doc и .docx) с няколко кликвания :)


Как работи?

Погледнете вашия excel файл


В този пример excel файлът съдържа информация за клиенти. Всеки ред отговаря на конкретен клиент. Имената са в колона А, фамилии в колона би професии в графата ° С.

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

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


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

Създайте "шаблон" (word-файл) за генериране на нови документи (word-файлове). Тук текстът на "шаблона" съдържа имената на колоните на excel файла, рамкирани с фигурни скоби: (А), (Б)и (° С).

Програмата ще генерира нови документи според "шаблона", замествайки всички (А), (Б)и (° С)съответните стойности на клетките от файла на Excel: (А)- име, (Б)- фамилия, (° С)- професия.

Можете също да зададете свои собствени гранични знаци в раздела Настройкипрограми.

Изберете пътища за файлове и папки


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

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

Шаблонен файл на Word (*.doc, *.docx)е пътят до вашия "шаблон" (файлът с думи, създаден в предишната стъпка);

Папка за запазване на новите word файлове- това е пътят до папката, в която програмата ще записва новосъздадените документи.

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

Задайте листовете и редовете на желаните данни


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

Задайте броя на листовете и редовете на вашия excel файл с данни (информация за клиенти), на който искате да генерирате документи:

Таблици с данни на Excel файл- номера на листове от вашия excel-файл, които ще участват във формирането на нови документи;

Редове с данни на Excel файл- номера на редове на листове (листове, посочени в Таблици с данни на Excel файл) на вашия excel файл, който ще участва във формирането на нови документи. Въз основа на данните от всеки указан ред ще бъде създаден отделен документ (word-файл).

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

Веднъж, след като обобщих резултатите от олимпиадата, когато участниците трябваше да изпратят писма с резултатите от издържаните (или неиздържаните) предмети, забелязах, че момичето седи и използва ръцете си, за да въведе резултатите от изпита, името на ученика и друга информация в шаблона на писмото. Пред нея лежаха няколко листа, разпечатани от Excel с имена и оценки. Копиране-поставяне, Ctrl + C - Ctrl + V, прехвърляне на пълното име от именителен в родителен падеж и така вече е свършена работа с половината от първия от трите листа с данни. Колко дълго мислите, че може да седи неподвижно, копирайки данните и след това да проверява резултата? Мисля дълго време и ще има доста грешки. Но тогава тя все още трябваше да подписва пощенски пликове ... Съжалявах за времето й и след няколко минути показах как този процес може да бъде автоматизиран с прости средства. След кратка екскурзия работата й беше завършена за 20 минути.

В този урок ще ви покажа как бързо да създавате документи (писма, покани) с минимално време. В различните версии на езиците този описан процес се нарича по различен начин. Така че на руски е "Сливане", а на английски - "Сливане".

Надявам се, че "писмата на щастието" от пенсионния фонд, данъчните известия се създават по същия начин :)

Инструменти

За да създаваме документи, се нуждаем от 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 и отидете в раздела "Изпращания". В този раздел можете да видите трите необходими стъпки: „Стартиране на сливането“, „Съставяне на документа и вмъкване на полета“ и „Завършване“. Има и междинна стъпка "Преглед на резултата", но тя не е задължителна.

И така работата започва с избора на документ. Това могат да бъдат писма, стикери, обикновен документ на Word. Можете също така да стартирате съветника за сливане точно тук, който ще ви води през всички стъпки в процеса. Следващата стъпка е да изберете получателя, тоест базата данни. Тук можете да изберете готова база данни (например таблицата на MS Excel, създадена на предишния етап) или да създадете нов списък. След избиране на списъка стават активни бутоните „Вмъкване на поле за обединяване“, „Редактиране на списък с получатели“ и пр. Чрез диалоговия прозорец „Редактиране на списък с получатели“, който се отваря със съответния бутон, можете да изберете от целия списък само записи, необходими за сливане.







Когато вмъквам полета, намирам за удобно да маркирам всички полета в сиво, като щракна върху бутона „Избор на обединени полета“. В противен случай, ако има много такива полета, те могат да бъдат загубени в текста.

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

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

Последният етап е генерирането на букви. В OpenOffice за това в менюто „Инструменти“ изберете „Съветник за обединяване на имейли ...“ и преминете през всички предложени стъпки, за да комбинирате нашия шаблон с базата данни.





В диалоговия прозорец виждаме, че от предложените 8 точки не трябва да изпълняваме някои точки. Така че вече сме създали документа и не е необходимо да го редактираме, също така вече сме вмъкнали адресния блок. Но да вървим по ред.

Първо избираме да създаваме писма въз основа на текущия документ и натискаме „Напред“ в долната част на прозореца. Вторият момент е дали ще имаме това хартиено писмо или имейл. За да бъде запазено писмото във файл, изберете първото. Кликнете върху "Напред". В третия параграф ни се предлага да създадем адресен блок, но тъй като го създадохме на ръка, премахваме отметките от всички квадратчета и преминаваме към следващата стъпка. Тук ни се предлага да вмъкнем обжалване, но вече го имаме, така че щракнете върху „Напред“. В шестия параграф можете да редактирате документа, да разгледате документа с вмъкнати полета от базата данни и, ако е необходимо, да изключите някои полета.



На стъпка 7 се предлага да редактирате всеки от файловете, създадени в резултат на свързването на шаблона към базата данни. И накрая, на последната, стъпка 8, можете да изберете какво да правите с получените документи. Можете да запазите, отпечатате или изпратите по имейл. В този случай можете да запазите всички документи в един файл или всеки документ поотделно.

В MS Word процесът на сливане завършва с щракване върху бутона „Намиране и обединяване“.



От падащото меню е очевидно, че всички писма могат да бъдат отпечатани и изпратени по имейл, но не е очевидно, че всички те могат да бъдат записани във файл. За да запазите, изберете първия елемент - "Промяна на отделни документи". Това ще отвори нов документ, в който всяка нова буква ще бъде разположена на нова страница и тук този файл вече може да бъде запазен.

Заключение

И така, в този урок научихте как да използвате инструмента за сливане, за да създавате документи въз основа на шаблон. Нека накратко запишем последователността от действия:

  1. Необходимо е да се създаде база данни в табличния процесор, от която да се вземат данни за попълване на полетата.
  2. Трябва да създадете шаблон за писмо.
  3. Извършете сливането и запазете резултата.