Hur man skapar dokument i word. Programmatisk generering av formulärdokument i Word. Skapa en Word-dokumentmall

Vi lever i en värld där PHP-utvecklare måste interagera med operativsystemet då och då. Windows-system. WMI (Windows Management Interface) Windows kontroller) - ett sådant exempel är interaktion med Microsoft Office.

I den här artikeln kommer vi att titta på en enkel integration mellan Word och PHP: generation Microsoft dokument Ordbaserade inmatningsfält i HTML-form med PHP (och dess Interop-tillägg).

Förberedande steg

Först av allt, låt oss se till att vi har en grundläggande WAMP-miljö inställd. Eftersom Interop bara finns på Windows, behöver vi vår Apache-server och PHP-installation för att distribueras på en Windows-maskin. Som sådan använder jag EasyPHP 14.1, som är extremt lätt att installera och ställa in.

Nästa steg är att installera Microsoft Office. Versionen är inte särskilt viktig. Jag använder Microsoft Office 2013 Pro men alla Office-versionäldre än 2007 borde fungera.

Vi måste också se till att vi har installerat bibliotek för att utveckla Interop-applikationen (PIA, Primary Interop Assemblies, Primary Interop Assemblies). Du kan ta reda på det genom att öppna Windows utforskaren och gå till katalogen \assembly , och där borde vi se en uppsättning installerade sammansättningar:

Här kan du se Microsoft.Office.Interop.Word-elementet (understruket i skärmdumpen). Detta kommer att vara byggnaden vi kommer att använda i vår demo. Var uppmärksam Särskild uppmärksamhet på fälten "Assembly name (Assembly name)", "Version (Version)" och "Public key token (Public key token)". Vi kommer att använda dem snart i vårt PHP-skript.

Denna katalog innehåller även andra sammansättningar (inklusive hela Office-familjen) tillgängliga för användning i deras program (inte bara för PHP utan även för VB.net, C#, etc.).

Om listan över sammansättningar inte inkluderar hela Microsoft.Office.Interop-paketet, måste vi antingen installera om Office genom att lägga till PIA, eller manuellt ladda ner paketet från Microsofts webbplats och installera det. För mer detaljerade instruktioner se den här sidan på MSDN.

Kommentar Obs: Endast Microsoft Office 2010 PIA-distributionen är tillgänglig för nedladdning och installation. Monteringsversionen i detta paket är 14.0.0 och version 15 kommer endast med Office 2013.

Slutligen måste du aktivera tillägget php_com_dotnet.dll i php.ini och starta om servern.

Nu kan vi gå vidare till programmering.

HTML-formulär

Sedan huvuddelen detta exempel ligger på serversidan kommer vi att skapa en enkel sida med ett formulär som kommer att se ut så här:

Vi har ett textfält för namnet, en grupp radioknappar för könet, ett skjutreglage för åldern och ett textinmatningsområde för att skriva in ett meddelande, samt den ökända "Skicka"-knappen.

Spara den här filen som "index.html" i katalogen virtuell värd så att den kan nås på en URL som http://test/test/interop .

Server del

Hanterarfilen på serversidan är huvudmålet för vår konversation. Till att börja med kommer jag att ge fullständig kod denna fil, och sedan kommer jag att förklara det steg för steg.

synlig = sant; $fn = __DIR__ . "\\mall.docx"; $d = $w->Dokument->Öppna($fn); echo "Dokumentet är öppet.


"; $flds = $d->Fält; $count = $flds->Count; echo "Dokumentet har $count-fält.
"; eka"
    "; $mapping = setupfields(); foreach ($flds som $index => $f) ( $f->Select(); $key = $mapping[$index]; $value = $inputs[$key]; if ($nyckel == "kön") ( if ($värde == "(!LANG:m") $value = "Herr."; else $value = "Fröken."; } if($key=="printdate") $value= date ("Y-m-d H:i:s"); $w->Selection->TypeText($value); echo "!}
  • Tilldela $index: $nyckel till $värde
  • "; ) echo "
"; echo "Bearbetning slutförd!

"; echo "Skriver ut, vänta...
"; $d->PrintOut(); sleep(3); echo "Klart!"; $w->Quit(false); $w=null; function setupfields() ( $mapping = array(); $mapping = "gender"; $mapping = "namn"; $mapping = "ålder"; $mapping = "msg"; $mapping = "printdate"; returnera $mapping; )

Efter att vi har skrivit in värdena som tas emot från formuläret i variabeln $inputs, och även skapat ett tomt element med printdate-nyckeln (varför vi gjorde detta - vi kommer att diskutera senare), går vi vidare till fyra mycket viktiga rader:

$assembly = "Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"; $class = "Microsoft.Office.Interop.Word.ApplicationClass"; $w = new DOTNET($assembly, $class); $w->visible = sant;

PHPs COM-manipulator kräver att klassen instansieras i "sammansättningen". I vårt fall arbetar vi med Word. Om du tittar på den första skärmdumpen kan du skriva ner hela monteringssignaturen för Word:

  • "Namn", "Version", "Public Key Token" är alla hämtade från information som kan ses i "c:\Windows\assembly" .
  • "Kultur" är alltid neutral

Klassen vi vill referera till heter alltid "assembly name" + ".ApplicationClass".

Genom att ställa in dessa två parametrar kan vi få ett objekt att fungera med Word.

Det här objektet kan förbli i bakgrunden, eller så kan vi ta det i produktion genom att ställa in attributet visible till true .

Nästa steg är att öppna dokumentet som ska bearbetas och skriva en instans av "dokumentet" till variabeln $d .

Det finns flera sätt att skapa formulärbaserat innehåll i ett dokument.

Det värsta att göra skulle vara att hårdkoda innehållet i dokumentet i PHP och sedan mata ut det till ett Word-dokument. Jag rekommenderar starkt att du inte gör detta av följande skäl:

  1. Du tappar flexibilitet. Alla ändringar av utdatafilen kommer att kräva ändringar av PHP-koden.
  2. Detta bryter åtskillnaden mellan kontroll och syn
  3. Att tillämpa stilar på dokumentinnehåll (justering, typsnitt, stilar, etc.) i ett skript kommer att avsevärt öka antalet rader kod. Att ändra stilar programmatiskt är för besvärligt.

Ett annat alternativ skulle vara att använda hitta och ersätta. PHP har bra inbyggda verktyg för detta. Vi kan skapa ett Word-dokument där vi placerar etiketter med speciella avgränsare, som senare kommer att ersättas. Till exempel kan vi skapa ett dokument som innehåller följande kodavsnitt:

och med hjälp av PHP kan vi enkelt ersätta det med innehållet i fältet "Namn" som vi fått från formuläret.

Detta är enkelt och räddar oss från alla obehagliga konsekvenser som vi möter i den första metoden. Vi behöver bara bestämma oss för rätt avgränsare, i så fall använder vi en mall.

Jag rekommenderar den tredje metoden, och den bygger på en djupare kunskap om Word. Vi kommer att använda fält som platshållare, och med hjälp av PHP-kod kommer vi direkt att uppdatera värdena i fälten med motsvarande värden.

Detta tillvägagångssätt är flexibelt, snabbt och överensstämmer med Words bästa praxis. Med den kan du även undvika fulltextsökning i dokumentet, vilket har god effekt på prestandan. Observera att denna lösning också har nackdelar.

Word stödde inte namngivna index för fält från första början. Även om vi har angett namn för de skapade fälten, måste vi fortfarande använda de numeriska identifierarna för dessa fält. Detta förklarar också varför vi behöver använda en separat funktion (setupfields) för att matcha fältindexet och fältnamnet från formuläret.

I denna demo kommer vi att använda ett dokument med 5 MERGEFIELD-fält. Vi kommer att placera malldokumentet på samma plats som vår skripthanterare.

Observera att fältet printdate inte har ett motsvarande fält på formuläret. Det var därför vi lade till ett tomt printdate-element till $inputs-arrayen. Utan detta kommer skriptet fortfarande att köras och köras, men PHP kommer att utfärda en varning om att printdate-indexet saknas från $inputs-arrayen.

Efter att ha ersatt fälten med nya värden skriver vi ut dokumentet med

$d->PrintOut();

PrintOut-metoden tar några valfria parametrar, och vi använder den enklaste formen av den. Detta kommer att skriva ut en kopia av dokumentet på standardskrivaren som är ansluten till Windows-maskinen.

Du kan också ringa PrintPreview för att ta en titt på resultatet innan du skriver ut det. I en helautomatisk miljö kommer vi givetvis att använda PrintOut-metoden.

Du måste vänta ett tag innan du avslutar Word-applikationen, eftersom det tar tid för utskriftsjobbet att stå i kö. Utan fördröjning(3) exekveras metoden $w->Quit omedelbart och jobbet ställs inte i kö.

Slutligen anropar vi $w->Quit(false) , vilket stänger Word-applikationen som anropades av vårt skript. Den enda parameter som skickas till metoden är att spara filen innan du avslutar. Vi har gjort ändringar i dokumentet, men vi vill inte spara dem eftersom vi behöver en ren mall för senare arbete.

När vi är klara med koden kan vi ladda vår formulärsida, fylla i några värden och skicka in den. Bilderna nedan visar utdata från skriptet såväl som det uppdaterade Word-dokumentet:

Förbättrad bearbetningshastighet och lite mer om PIA

PHP är ett löst skrivet språk. Ett COM-objekt av typen Object . När vi skriver skriptet har vi inget sätt att få beskrivningen av objektet, vare sig det är ett Word-program, ett dokument eller ett fält. Vi vet inte vilka egenskaper det här objektet har eller vilka metoder det stöder.

Detta kommer att avsevärt sakta ner utvecklingshastigheten. För att påskynda utvecklingen skulle jag rekommendera att först skriva funktioner i C# och sedan översätta koden till PHP. Jag kan rekommendera en gratis IDE för C#-utveckling som heter "#develop". Du kan hitta henne. Jag föredrar det framför Visual Studio eftersom #develop är mindre, enklare och snabbare.

Att migrera C#-kod till PHP är inte så läskigt som det verkar. Låt mig visa dig ett par rader i C#:

Word.Application w=new Word.Application(); w.Synlig=sant; String path=Application.StartupPath+"\\template.docx"; Word.Document d=w.Documents.Open(sökväg) som Word.Document; Word.Fields flds=d.Fields; intlen=flds.Count; foreach (Word.Field f i flds) ( f.Select(); int i=f.Index; w.Selection.TypeText("..."); )

Du kan se att C#-koden är väldigt lik PHP-koden jag visade tidigare. C# är ett starkt skrivet språk, så i det här exemplet kan du se flera cast-operatorer, och du måste också ange en typ för variabler.

Genom att specificera variabeltypen kan du njuta av tydligare kod och autokomplettering, och utvecklingshastigheten ökar kraftigt.

Ett annat sätt att påskynda PHP-utvecklingen är att anropa ett makro i Word. Vi utför samma sekvens av åtgärder och sparar det sedan som ett makro. Makrot är skrivet i Visual Basic, vilket också är lätt att översätta till PHP.

Och viktigast av allt är Microsofts Office PIA-dokumentation, särskilt namnutrymmesdokumentationen för varje Office-program, den mest detaljerade referensen. De tre mest använda applikationerna är:

  • 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

Slutsats

I den här artikeln visade vi dig hur du fyller i ett Word-dokument med data med hjälp av PHP COM-bibliotek och Microsoft Office-kompatibilitet.

Windows och Office används ofta i det dagliga livet. Att känna till kraften i Office/Window och PHP kommer att vara användbart för alla PHP- och Windows-utvecklare.

PHP COM-tillägget öppnar dörren för dig att använda denna kombination.

Vi sysslar alla med texter, på ett eller annat sätt. Ibland finns det ett behov av att generera en stor eller inte särskilt stor mängd text för någon uppgift, till exempel för att leka med formatering, men det finns ingen text till hands, det är för lat att skriva det själv. Vad ska man göra? Svaret är enkelt: använd den inbyggda slumpmässiga textgeneratorn i Word!

I redaktör Microsoft Word du kan skapa text ganska snabbt och enkelt med hjälp av speciella kommandon. Jag kommer att använda Word 2007 som ett försökskanin. Dessa kommandon bör fungera i alla versioner av Word. Jag ska berätta om tre metoder för att generera text.

Metod 1: Använd rand()

Rand()-funktionen infogar ett lokaliserat textexempel, 3 stycken med 3 meningar. Öppna ditt Word, placera markören där texten snart kommer att visas och ange kommandot:

och tryck på Enter. Själva rand-funktionen försvinner och tre stycken text kommer att visas istället:

Men det är inte allt. Om du behöver mycket text kan du använda rand-funktionen med ytterligare argument, så här:

=rand(x,y)

var " x" betyder antalet stycken, och " y» är antalet meningar i varje stycke. Till exempel, =rand(20,5) kommer att infoga 20 stycken med fem fraser vardera. MEN =rand(7) kommer att infoga 7 stycken med 3 meningar vardera.

Metod 2: Använd lorem()

För att infoga den gamla goda Lorem Ipsum som ett prov – använd lorem ()-funktionen. Skriv följande kommando och tryck på Enter:

Och vi får den här helt latinska texten

Funktionen lorem() accepterar också enkelt ytterligare argument, som rand(), i form av ett antal stycken och meningar. Utan argument infogar funktionen som standard 3 stycken med 3 meningar vardera.

Metod 3. Funktionen rand.old().

Användningen liknar de tidigare kommandona:

=rand.old()

och tryck på Enter.

Rand.old()-funktionen är kvar för kompatibilitet med det gamla kontoret, fram till och med 2003. Appliceringsmetoden är densamma som de två föregående, bara texten kommer att bestå av samma fraser "Ät mer av dessa mjuka franska frallor och drick te." Denna fras är känd för alla som ibland fick arbeta med typsnitt.

Du kan skicka argument som i de två första metoderna.

Det är allt, texterna har genererats, nu kan du äta mer av dessa mjuka fransbröd och dricka te :)

Kunde du infoga text med ovanstående funktioner?

I de tidigare artiklarna i serien "Automatisera dokumentfyllning" pratade jag om hur man skapar en applikations användargränssnitt, organiserar indatavalidering och får ett nummer i ord utan att använda VBA-kod. I den här sista artikeln kommer vi att prata om magi - att överföra alla nödvändiga värden från en Excel-arbetsbok till ett Word-dokument. Låt mig visa dig slutresultatet:

Beskrivning av mekanismen

Till att börja med kommer jag att beskriva i allmänna termer exakt hur data kommer att överföras till ett Word-dokument. Först och främst behöver vi en Word-dokumentmall som innehåller alla markeringar, tabeller och den del av texten som kommer att förbli oförändrad. I den här mallen måste du definiera platserna där värdena från Excel-arbetsboken kommer att ersättas - det bekvämaste sättet att göra detta är med hjälp av bokmärken. Därefter måste du ordna Excel-data på ett sådant sätt att de matchar Word-mallen, och sist men inte minst, skriva själva överföringsproceduren i VBA.

Så, först till kvarn.

Skapa en Word-dokumentmall

Allt är extremt enkelt här - vi skapar ett vanligt dokument, skriver och formaterar texten, i allmänhet uppnår vi för att få den nödvändiga formen. På de platser där det kommer att vara nödvändigt att ersätta värden från Excel måste du skapa bokmärken. Detta görs på följande sätt:

Därför måste du skapa alla bokmärken, det vill säga markera alla platser där data från Excel kommer att infogas. Den resulterande filen måste sparas som en "MS Word-mall" med hjälp av menyalternativet "Arkiv" -> "Spara som...".

Excel-dataförberedelse

För enkelhetens skull bestämde jag mig för att lägga all data som måste överföras till Word-dokumentet på ett separat kalkylblad som heter Bokmärken - bokmärken. Detta ark har två kolumner: den första innehåller namnen på bokmärkena (exakt som de heter i Word-dokumentet), och den andra innehåller motsvarande värden som ska överföras.

Vissa av dessa värden erhålls direkt från datainmatningsbladet, och några är från hjälptabeller som finns på supportbladet. I den här artikeln kommer jag inte att analysera formlerna som beräknar de önskade värdena, om något inte är klart, ställ frågor i kommentarerna.

I detta skede är det viktigt att korrekt specificera alla namn på bokmärkena - korrektheten av dataöverföringen beror på detta.

Överföringsförfarande

Men det här är det mest intressanta. Det finns två alternativ för att köra datamigreringskoden:

  • Koden exekveras i en Excel-arbetsbok, data skickas till Word ett värde i taget och placeras omedelbart i dokumentet.
  • Koden exekveras i ett separat Word-dokument, all data överförs från Excel i en batch.

Ur exekveringshastighetens synvinkel, särskilt med ett stort antal bokmärken, ser det andra alternativet mycket mer attraktivt ut, men kräver mer komplexa åtgärder. Det är den jag använde.

Här är vad som behöver göras:

  • Skapa en makroaktiverad Word-dokumentmall. Den här mallen kommer att innehålla den körbara VBA-koden.
  • I den skapade mallen måste du placera ett program skrivet i VBA. För att göra detta, när du redigerar en mall, tryck på tangentkombinationen Alt + F11 och skriv in programkoden i Visual Basic-redigeringsfönstret som öppnas.
  • I en Excel-arbetsbok skriver du kod som anropar fyllningsproceduren från den nyskapade Word-mallen.

Jag kommer inte att ge texten till proceduren i artikeln - den kan enkelt ses i filen FillDocument.dotm som finns i mallmappen i exempelarkivet.

Hur kan du använda allt detta för att lösa just ditt problem?

Jag förstår att det hela i ord ser väldigt enkelt ut, men vad händer i praktiken? Jag föreslår att du bara använder det färdiga alternativet. Ladda ner arkivet med exemplet, i en Excel-arbetsbok, tryck på tangentkombinationen Alt + F11 för att öppna Visual Basic-redigeraren och läsa alla mina kommentarer om programmet. För att ändra programmet så att det passar dina behov behöver du bara ändra värdet på ett fåtal konstanter, de placeras i början av programmet. Du kan fritt kopiera hela programmets text till ditt projekt.

Arkivstruktur

Arkivet som bifogas denna artikel innehåller flera filer.

Huvudfilen är en Excel-arbetsbok som heter "Generera bekräftelser". Det finns 4 arbetsblad i denna arbetsbok, varav endast två visas: "Input" - ett datainmatningsblad och "Databas" - ett arkiv med alla inmatade dokument.

Mappen Mallar innehåller Word-dokumentmallar. En av dem är en mall som innehåller ett bokmärkesfyllningsprogram, och den andra är ett formulär att fylla i. Du kan använda mallen med programmet utan ändringar, men formuläret att fylla i måste naturligtvis ändras i enlighet med dina behov.

Hur omarbetar man exemplet "för sig själv"?

  1. Förbered en Word-dokumentmall som ska fyllas i. Skapa alla nödvändiga bokmärken i den och spara den som en "MS Word-mall".
  2. Kopiera filen FillDocument.dotm från arkivet som bifogas den här artikeln till mappen med den förberedda mallen. Den här filen är ansvarig för att fylla i mallbokmärkena, och ingenting behöver ändras i den.
  3. Förbered en Excel-arbetsbok för datainmatning. Det är upp till dig att bestämma om den ska ha något "avancerat" användargränssnitt och utföra olika kluriga beräkningar. Huvudsaken är att den innehåller ett kalkylblad med en överensstämmelsetabell mellan namnet på bokmärket i Word-mallen och värdet som ska ersättas.
  4. Infoga VBA-programkoden från exempelfilen i den förberedda arbetsboken. Byt ut alla konstanter enligt ditt projekt.
  5. Testa för korrekt funktion.
  6. Njut aktivt!

A, efternamn i kolumnen B och yrken i spalten C.

2. Skapa ett word-dokument (.doc eller .docx)


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

(A), (B) och (C) (A)- namn, (B)- efternamn, (C)- yrke.

inställningar program.

3. Välj sökvägar för filer och mappar


Välj

4. Ställ in ark och rader med önskad data


Excel-fil datablad

Excel-fildatarader Excel-fil datablad

1 .

Om du vill att alla ark och/eller rader i din excel-fil med data ska delta i bildandet av dokumentet, klicka på motsvarande knapp till höger med rubriken tal(dess inskription kommer att ändras till Allt).

5. Ställ in namnmallen för nya ordfiler


Ställ in namnmallen för nya ordfiler:

Ny mall för namn på word-filerär en mall för namnen på nya dokument (word-filer) som genereras av programmet. Här innehåller namnmallen namnen på kolumnerna i excel-filen, inramade av hängslen: (A) och (B). När ett nytt dokument skapas kommer programmet att ersätta alla (A) och (B) motsvarande cellvärden från excel-filen - detta kommer att vara namnet på det nya dokumentet (word-fil).

Du kan ställa in dina egna kanttecken på fliken inställningar program.

6. Klicka på "Generera"


Klicka på knappen Generera och förloppet visas på skärmen. Dokument (word-filer) kommer att skapas exakt så många rader i excel-filen är involverade i formationen.

7. Allt


Alla dokument (word-filer) har skapats och finns i den mapp som anges i Mapp för att spara de nya word-filerna. Allt:)

Exwog- mallrapportgenerator från excel till word

Gratis Word-filgenerator efter mall (Word-fil) baserat på Excel-fildata

Fungerar på Mac OS, Windows och Linux

Låter dig ställa in namnen på nya genererade ordfiler

Låter dig ställa in ark och rader med nödvändig data

Låter dig ställa in ramtecken för Excel-kolumnnamn

Lätt att använda

Lagra dina data i Excel-format (.xls och .xlsx) och generera Word-filer (.doc och .docx) med några få klick :)


Hur det fungerar?

Ta en titt på din excel-fil


I det här exemplet innehåller excel-filen information om klienter. Varje rad motsvarar en specifik klient. Namn finns i en kolumn A, efternamn i kolumnen B och yrken i spalten C.

Klicka för att se

Skapa ett word-dokument (.doc eller .docx)


Klicka för att se

Skapa en "mall" (word-fil) för att generera nya dokument (word-filer). Här innehåller texten i "mallen" namnen på kolumnerna i excel-filen, inramade av hängslen: (A), (B) och (C).

Programmet kommer att generera nya dokument enligt "mallen" som ersätter alla (A), (B) och (C) motsvarande cellvärden från excel-filen: (A)- namn, (B)- efternamn, (C)- yrke.

Du kan också ställa in dina egna kanttecken på fliken inställningar program.

Välj sökvägar för filer och mappar


Välj sökvägar för filer och mappar (knappar märkta Välj). I programmet anger du följande sökvägar:

Excel-fil med data (*.xls, *.xlsx)- detta är sökvägen till din excel-fil med data (kundinformation);

Word-mallfil (*.doc, *.docx)är sökvägen till din "mall" (ordfilen som skapades i föregående steg);

Mapp för att spara de nya word-filerna- detta är sökvägen till mappen där programmet kommer att spara de nygenererade dokumenten.

Klicka för att se

Ställ in ark och rader med önskad data


Klicka för att se

Ställ in antalet ark och rader i din excel-fil med data (information om klienter) som du vill generera dokument på:

Excel-fil datablad- Antal ark i din excel-fil som kommer att vara involverade i bildandet av nya dokument;

Excel-fildatarader- radnummer för ark (ark specificerade i Excel-fil datablad) i din excel-fil som kommer att vara involverad i bildandet av nya dokument. Baserat på data för varje specificerad rad kommer ett separat dokument (word-fil) att skapas.

Numreringen av blad och rader i programmet börjar med 1 .

En gång, efter att ha summerat resultaten av olympiaden, när deltagarna behövde skicka ut brev med resultaten av godkända (eller ej godkända) ämnen, märkte jag att tjejen satt och skrev in provresultaten, studentens namn och annan information i brevmallen med händerna. Framför henne låg flera ark utskrivna från Excel med namn och betyg. Copy-Paste, Ctrl + C - Ctrl + V, överför det fullständiga namnet från nominativ till genitiv, och så har arbetet redan gjorts med hälften av det första av de tre databladen. Hur länge tror du att hon kunde sitta stilla och kopiera uppgifterna och sedan kontrollera resultatet? Jag tror länge, och det skulle vara en hel del misstag. Men då fick hon ändå skriva under postkuvert... Jag tyckte synd om hennes tid och på några minuter visade jag hur denna process kunde automatiseras med enkla medel. Efter en kort utflykt var hennes arbete klart på 20 minuter.

I den här lektionen kommer jag att visa dig hur du snabbt skapar dokument (brev, inbjudningar) med ett minimum av tid. I olika versioner av språk kallas denna beskrivna process olika. Så på ryska är det "Merge", och på engelska - "Merge".

Jag hoppas att "lyckobrev" från pensionskassan, skatteaviseringar skapas på samma sätt :)

Verktyg

För att skapa dokument behöver vi OpenOffice Writer. I den kommer vi att skapa en brevmall. Du behöver också OpenOffice Calc. I den kommer vi att skapa en databas med namn och adresser på de personer som vi till exempel vill bjuda in till en fest. Istället för program från OpenOffice-paketet kan MS Word och Excel enkelt användas. Databasen kan enkelt ligga i MS Access. Och så, låt oss börja.

Skapande av databas

En databas är inget annat än en tabell i MS Excel eller OpenOffice Calc, där data är ordnade i kolumner och den första raden används för att namnge kolumnerna. Låt oss börja, till exempel, kolumnerna "namn", "stad", "postnummer", "adress". Ange data och spara filen på disk.



Andra källor kan också användas som databaser, till exempel en Outlook-adressbok eller en MS Access-databas.

Skapa en brevmall

Med skapandet av en brevmall är situationen lite mer komplicerad. Eftersom data från tabellen (vår databas) kommer att ersättas med mallen som den är, måste brevet skrivas därefter. Om ditt fullständiga namn står i nominativfallet i din databas, är det osannolikt att du kommer att kunna använda detta fält i överklagandet "Bästa,<ФИО>!" och för kuvertet på raden "Till:<ФИО>". I det senare fallet kommer det fullständiga namnet att se något klumpigt ut.

När du skriver en brevmall rekommenderar jag att börja med att skriva ett brev till någon riktig person. Du kan för dig själv. Markera sedan i den data som du kommer att ta från databasen och ersätt dem med lämpliga fält. Innan du ersätter den markerade texten med ett fält rekommenderar jag att du är uppmärksam på vilken bokstav fältet i databasen ska börja med (gemen eller versal). Naturligtvis kan du skapa en mall direkt med fälten, men då kanske du inte märker några misstag, som inkonsekvenser i ärenden.



Redan i ovanstående mall är det tydligt att vi behöver ett fullständigt namn i genitivfallet och ett fält som endast innehåller för- och mellannamn. Med det första fältet kan vi byta ut "Till" mot "Mottagare" och då kommer det fullständiga namnet i nominativ fall att passa oss perfekt. Med det andra fältet är allt något mer komplicerat och vi måste skapa en annan kolumn i databasen och fylla den med lämplig data. I en av följande lektioner kommer jag att berätta hur du gör detta automatiskt, men för närvarande kommer vi att anta att vi redan har ett sådant fält.

För att infoga ett fält och binda mallen till databasen måste du utföra följande sekvens av åtgärder. Välj en databas i OpenOffice Writer



och klicka på "Definiera".



Infoga sedan fältet från den anslutna databasen på rätt plats. För att göra detta, tryck på Ctrl + F2, eller välj "Fält" och "Övrigt" från "Infoga"-menyn. I fönstret som öppnas väljer du fliken "Databaser", väljer "Kortkopplingsfält" i fälttypen, väljer lämpligt fält från databasen och klickar på "Infoga". Själva databasen kan också väljas i detta fönster.



Efter att ett fält har infogats, utan att stänga det aktuella fönstret, välj texten som ska ersättas av nästa fält, välj fältet och klicka på "Infoga" igen. Och så för vart och ett av fälten.

För MS Word är situationen något liknande och kanske mer bekväm. När du har skapat en tabell i MS Excel, starta MS Word och gå till fliken "Utskick". På den här fliken kan du se de tre nödvändiga stegen: "Starta sammanslagning", "Skapa dokumentet och infoga fält" och "Slutför". Det finns också ett mellansteg "Visa resultat", men det är valfritt.

Och så börjar arbetet med valet av ett dokument. Det kan vara bokstäver, klistermärken, ett vanligt Word-dokument. Du kan också köra sammanslagningsguiden här, som guidar dig genom alla steg i processen. Nästa steg är att välja mottagare, det vill säga databasen. Här kan du välja en färdig databas (till exempel MS Excel-tabellen som skapades i föregående steg), eller skapa en ny lista. Efter att listan är vald aktiveras knapparna ”Infoga sammanslagningsfält”, ”Redigera mottagarlista” etc. Genom dialogen ”Redigera mottagarlista”, som öppnas med motsvarande knapp, kan du från hela listan endast välja uppgifter som behövs för sammanslagning.







När jag infogar fält tycker jag att det är bekvämt att markera alla fält i grått genom att klicka på knappen "Välj sammanfoga fält". Annars, om det finns många sådana fält, kan de gå förlorade i texten.

Och så är mallen klar.

Brevgenerering

Det sista steget är genereringen av bokstäver. I OpenOffice, för detta, i menyn "Verktyg", välj "Guiden för sammankoppling av brev ..." och gå igenom alla föreslagna steg för att kombinera vår mall med databasen.





I dialogrutan ser vi att av de föreslagna 8 punkterna behöver vi inte utföra vissa punkter. Så vi har redan skapat dokumentet och vi behöver inte redigera det, vi har också redan infogat adressblocket. Men låt oss gå i ordning.

Först väljer vi att vi skapar bokstäver utifrån det aktuella dokumentet och klickar på "Nästa" längst ner i fönstret. Den andra punkten är om vi kommer att ha detta pappersbrev eller e-post. För att bokstaven ska sparas i en fil, välj den första. Klicka på "Nästa". I det tredje stycket erbjuds vi att skapa ett adressblock, men eftersom vi skapade det för hand avmarkerar vi alla rutorna och går vidare till nästa steg. Här erbjuds vi att lägga in ett överklagande, men vi har det också redan, så klicka på "Nästa". I det sjätte stycket kan du redigera dokumentet, titta på dokumentet med fälten infogade från databasen och vid behov utesluta några fält.



I steg 7 föreslås det att redigera var och en av de filer som skapas som ett resultat av att mallen kopplas till databasen. Och slutligen, vid det sista steg 8, kan du välja vad du ska göra med de mottagna dokumenten. Du kan spara, skriva ut eller skicka via e-post. I det här fallet kan du spara alla dokument i en fil, eller varje dokument separat.

I MS Word slutförs sammanslagningsprocessen genom att klicka på knappen "Sök och sammanfoga".



Från rullgardinsmenyn är det självklart att alla brev kan skrivas ut och skickas via e-post, men det är inte självklart att alla kan sparas i en fil. För att spara, välj det första objektet - "Ändra enskilda dokument". Detta öppnar ett nytt dokument där varje ny bokstav kommer att finnas på en ny sida, och här kan denna fil redan sparas.

Slutsats

Och så, i den här lektionen, lärde du dig hur du använder sammanslagningsverktyget för att skapa dokument baserat på en mall. Låt oss kort skriva ner sekvensen av åtgärder:

  1. Det är nödvändigt att skapa en databas i kalkylbladsprocessorn, från vilken data kommer att tas för att fylla i fälten.
  2. Du måste skapa en brevmall.
  3. Utför sammanslagningen och spara resultatet.