Ne jetojmë në një botë ku zhvilluesit e PHP duhet të bashkëveprojnë me të sistemi operativ Dritaret. WMI (ndërfaqja e menaxhimit të Windows) Menaxhimi i Windows) - Një shembull i tillë është ndërveprimi me Microsoft Office.

Në këtë artikull do të shikojmë një integrim të thjeshtë midis Word dhe PHP: Gjenerimi i Dokumenteve Microsoft Word Bazuar në fushat hyrëse në një formë HTML duke përdorur PHP (dhe shtrirjen e tij të ndërhyrjes).

Hapat përgatitor

Para së gjithash, le të sigurohemi që kemi të konfiguruar një mjedis themelor WAMP. Meqenëse ndërhyrja është e pranishme vetëm në dritare, ne kemi nevojë për tonat Server Apache dhe instalimi PHP u vendos në Makinë Windows. Në këtë kapacitet, unë përdor EasyPHP 14.1, i cili është jashtëzakonisht i lehtë për t'u instaluar dhe konfiguruar.

Gjëja tjetër që duhet të bëni është të instaloni Microsoft Office. Versioni nuk është shumë i rëndësishëm. Unë jam duke përdorur Microsoft Office 2013 Pro, por çdo version i Office më i vjetër se 2007 duhet të jetë në rregull.

Ne gjithashtu duhet të sigurohemi që kemi të instaluara bibliotekat për zhvillimin e aplikacionit Interop (PIA, Primary Interop Assemblies, Main Interop Assemblies). Mund ta zbuloni duke hapur Windows Explorer dhe duke shkuar te drejtoria \assembly, dhe aty duhet të shohim një grup asamblesh të instaluar:

Këtu mund të shihni elementin Microsoft.Office.Interop.Word (të nënvizuar në pamjen e ekranit). Kjo do të jetë ndërtimi që do të përdorim në demonstrimin tonë. Ju lutemi kushtojini vëmendje të veçantë fushave "Emri i Asamblesë", "Versioni" dhe "Shenja e çelësit publik". Së shpejti do t'i përdorim ato në skriptin tonë PHP.

Kjo direktori përmban gjithashtu asamble të tjera (duke përfshirë të gjithë familjen Office) të disponueshme për përdorim në programet tuaja (jo vetëm për PHP, por edhe për VB.net, C#, etj.).

Nëse lista e asambleve nuk përfshin të gjithë paketën Microsoft.Office.Interop, atëherë duhet ose të riinstalojmë Office duke shtuar PIA, ose ta shkarkojmë manualisht paketën nga faqja e Microsoft dhe ta instalojmë. Për udhëzime më të hollësishme, ju lutemi referojuni kësaj faqeje MSDN.

Koment: Vetëm shpërndarja PIA Microsoft Office 2010 është e disponueshme për shkarkim dhe instalim. Versioni i asambleve në këtë paketë është 14.0.0 dhe versioni 15 ofrohet vetëm me Office 2013.

Më në fund, duhet të aktivizoni shtesën php_com_dotnet.dll në php.ini dhe të rinisni serverin.

Tani mund të kaloni në programim.

Forma HTML

Meqenëse pjesa më e madhe e këtij shembulli është në anën e serverit, ne do të krijojmë një faqe të thjeshtë me një formë që do të duket si kjo:

Ne kemi një fushë teksti për emrin, një grup butonash radio për gjininë, një rrëshqitës për moshën dhe një zonë të futjes së tekstit për të futur një mesazh, si dhe butonin famëkeq "Dërgo".

Ruaje këtë skedar si "index.html" në direktorinë e hostit virtual në mënyrë që të arrihet në një adresë si http://test/test/interop.

Pjesa e serverit

Skedari i mbajtësit nga ana e serverit është qëllimi kryesor i bisedës sonë. Për të filluar, unë do të jap kodin e plotë për këtë skedar dhe më pas do ta shpjegoj hap pas hapi.

i dukshëm = i vërtetë; $fn = __DIR__ . "\\ template.docx"; $ d = $ w-> dokumente-> e hapur ($ fn); Echo "Dokumenti është i hapur.


"; $flds = $d->Fushat; $count = $flds->Count; echo "Ka fusha $count në dokument.
"; jehonë"
    "; $mapping = setupfields(); foreach ($flds si $index => $f) ($f->Select(); $key = $mapping[$index]; $value = $inputs[$key]; nëse ($ kyç == "Gjinia") (nëse ($ vlera == "(! Lang: m") $value = "Zoti."; else $value = "Znj."; } if($key=="printdate") $value= date ("Y-m-d H:i:s"); $w->Selection->TypeText($value); echo "!}
  • Unë caktoj indeksin e fushës $: $ kyç vlera $ vlera $
  • ";) jehonë"
"; echo "Përpunimi përfundoi!

"; jehonë "Po shkruaj, ju lutem prisni...
"; $d->PrintOut(); sleep(3); jehona "U krye!"; $w->Quit(false); $w=null; funksioni setupfields() ( $mapping = array(); $mapping = "gjinia"; $mapping = "emri"; $mapping = "mosha"; $mapping = "msg"; $mapping = "printdate"; kthimi i $mapping; )

Pasi të kemi mbushur variablin $inputs me vlerat e marra nga formulari, dhe gjithashtu kemi krijuar një element bosh me çelësin e datës së printimit (do të diskutojmë pse e bëmë këtë më vonë), vijmë në katër rreshta shumë të rëndësishëm:

$assembly = "Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"; $class = "Microsoft.Office.Interop.Word.ApplicationClass"; $w = DOTNET i ri ($assembly, $class); $w->i dukshëm = i vërtetë;

Manipulatori COM në PHP kërkon krijimin e një shembulli të klasës brenda një "assembly". Në rastin tonë, ne punojmë me Word. Nëse shikoni pamjen e parë të ekranit, mund të shkruani nënshkrimin e plotë të montimit për Word:

  • "Emri", "Versioni", "Tokeni i çelësit publik" - e gjithë kjo është marrë nga informacioni që mund të shihet në "c:\Windows\assembly".
  • "Kultura" është gjithmonë neutrale

Klasa që duam t'i referohemi quhet gjithmonë "emri i asamblesë" + " .ApplicationClass ".

Duke vendosur këto dy parametra mund të marrim një objekt për të punuar me Word.

Ky objekt mund të mbetet në sfond, ose mund ta vendosim në modalitetin e punës duke vendosur atributin e dukshëm në true.

Hapi tjetër është hapja e dokumentit që kërkon përpunim dhe shkrimi i një shembulli të "dokumentit" në ndryshoren $d.

Për të krijuar përmbajtje në një dokument bazuar në të dhënat e formularit, mund të merrni disa rrugë.

Gjëja më e keqe do të ishte kodimi i përmbajtjes së dokumentit në PHP dhe më pas nxjerrja e tij në një dokument Word. Unë rekomandoj fuqimisht të mos e bëni këtë për arsyet e mëposhtme:

  1. Ju humbni fleksibilitetin. Çdo ndryshim në skedarin e daljes do të kërkojë ndryshime në kodin PHP.
  2. Kjo prish ndarjen e kontrollit dhe pamjes
  3. Aplikimi i stileve në përmbajtjen e dokumentit (radhitja, fontet, stilet, etj.) në një skript do të rrisë shumë numrin e rreshtave të kodit. Ndryshimi i stileve në mënyrë programore është shumë i rëndë.

Një tjetër mundësi do të ishte përdorimi i kërkimit dhe zëvendësimit. PHP ka pajisje të mira të integruara për këtë. Mund të krijojmë një dokument Word në të cilin do të vendosim etiketa me kufizues të veçantë, të cilët më vonë do të zëvendësohen. Për shembull, ne mund të krijojmë një dokument që përmban fragmentin e mëposhtëm:

dhe me ndihmën e PHP-së mund ta zëvendësojmë lehtësisht me përmbajtjen e fushës “Emri” të marrë nga formulari.

Është e thjeshtë dhe na shpëton nga të gjitha pasojat e pakëndshme që hasim në metodën e parë. Thjesht duhet të vendosim për ndarësin e duhur, në të cilin rast përfundojmë duke përdorur një model.

Unë rekomandoj metodën e tretë, dhe ajo mbështetet në një njohuri më të thellë të Word-it. Ne do të përdorim fushat si mbajtës të vendeve, dhe duke përdorur kodin PHP do të përditësojmë drejtpërdrejt vlerat në fushat me vlerat përkatëse.

Kjo qasje është fleksibël, e shpejtë dhe në përputhje me praktikat më të mira të Word-it. Mund t'ju ndihmojë gjithashtu të shmangni kërkimin me tekst të plotë në një dokument, gjë që është e mirë për performancën. Vërej se kjo zgjidhje ka edhe disavantazhe.

Word nuk ka mbështetur indekset e emërtuara për fushat që në fillim. Edhe nëse kemi specifikuar emra për fushat që krijohen, përsëri duhet të përdorim identifikuesit numerikë të këtyre fushave. Kjo shpjegon gjithashtu pse duhet të përdorim një funksion të veçantë (fushat e konfigurimit) për të përshtatur indeksin e fushës me emrin e fushës nga formulari.

Në këtë mësim demo do të përdorim një dokument me 5 fusha MERGEFIELD. Do ta vendosim dokumentin shabllon në të njëjtin vend me mbajtësin tonë të skriptit.

Ju lutemi vini re se fusha e datës së printimit nuk ka një fushë përkatëse në formular. Kjo është arsyeja pse ne shtuam një element bosh të datës së printimit në grupin $inputs. Pa këtë, skripti do të vazhdojë të fillojë dhe të ekzekutohet, por PHP do të lëshojë një paralajmërim se indeksi i datës së printimit nuk është në grupin $inputs.

Pas zëvendësimit të fushave me vlera të reja, do ta printojmë dokumentin duke përdorur

$d->PrintOut();

Metoda PrintOut merr disa parametra opsionale dhe ne po përdorim formën më të thjeshtë të saj. Kjo do të printojë një kopje të dokumentit në printerin e paracaktuar të bashkangjitur me makinën Windows.

Mund të telefononi gjithashtu PrintPreview për të parë paraprakisht daljen përpara se ta printoni atë. Në një mjedis plotësisht automatik, sigurisht që do të përdorim metodën PrintOut.

Mund t'ju duhet të prisni pak përpara se të mbyllni aplikacionin Word në mënyrë që të duhet kohë për të vendosur në radhë punën e printimit. Pa vonesë(3), metoda $w->Quit ekzekutohet menjëherë dhe puna nuk është në radhë.

Së fundi, ne thërrasim $w->Quit(false) , e cila mbyll aplikacionin Word që u thirr nga skripti ynë. Parametri i vetëm që i kalon metodës është një udhëzim për të ruajtur skedarin përpara se të dilni. Kemi bërë ndryshime në dokument, por nuk duam t'i ruajmë sepse na duhet një shabllon i pastër për punë të mëvonshme.

Pasi të kemi mbaruar me kodin, mund të ngarkojmë faqen tonë të formularit, të plotësojmë disa vlera dhe ta dorëzojmë atë. Imazhet më poshtë tregojnë daljen e skriptit, si dhe dokumentin e përditësuar të Word-it:

Shpejtësia e përmirësuar e përpunimit dhe pak më shumë rreth PIA

PHP është një gjuhë e shtypur dobët. Objekti COM i tipit Object. Gjatë shkrimit të një skripti, ne nuk kemi asnjë mënyrë për të marrë një përshkrim të një objekti, qoftë ky një aplikacion Word, një dokument ose një fushë. Ne nuk e dimë se çfarë karakteristikash ka ky objekt, ose çfarë metodash mbështet.

Kjo do të ngadalësojë shumë shpejtësinë e zhvillimit. Për të përshpejtuar zhvillimin, unë do të rekomandoja shkrimin e funksioneve fillimisht në C#, dhe më pas përkthimin e kodit në PHP. Unë mund të rekomandoj një IDE falas për zhvillimin e C# të quajtur "#zhvilloni". Mund ta gjeni. Unë e preferoj atë në Visual Studio sepse #develop është më i vogël, më i thjeshtë dhe më i shpejtë.

Migrimi i kodit C# në PHP nuk është aq i frikshëm sa duket. Më lejoni t'ju tregoj disa rreshta në C#:

Word.Application w=new Word.Application(); w.E dukshme=e vërtetë; Rruga e vargut=Application.StartupPath+"\\template.docx"; Word.Document d=w.Documents.Open(rruga) as Word.Document; Fjalë.Fushat flds=d.Fushat; int len=flds.Numëroni; foreach (Fjala.Fusha f në flds) ( f.Select(); int i=f.Index; w.Selection.TypeText("..."); )

Do të vini re se kodi C# është shumë i ngjashëm me kodin PHP që tregova më parë. C# është një gjuhë e shtypur fort, kështu që në këtë shembull do të vini re se ka disa operatorë cast dhe se variablat duhet të shtypen.

Duke specifikuar llojin e një ndryshoreje, mund të shijoni kodin më të pastër dhe plotësimin automatik, dhe shpejtësia e zhvillimit rritet ndjeshëm.

Një mënyrë tjetër për të përshpejtuar zhvillimin e PHP është thirrja e një makro në Word. Ne kryejmë të njëjtën sekuencë veprimesh, dhe më pas e ruajmë atë si një makro. Makroja është shkruar në Visual Basic, e cila është gjithashtu e lehtë për t'u përkthyer në PHP.

Dhe, më e rëndësishmja, dokumentacioni i Microsoft Office PIA, veçanërisht dokumentacioni i hapësirës së emrave për çdo aplikacion Office, është materiali më i detajuar i referencës në dispozicion. Tre aplikacionet më të përdorura janë:

  • 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

konkluzioni

Në këtë artikull, ne treguam se si të plotësojmë një dokument Word me të dhëna duke përdorur bibliotekat PHP COM dhe aftësitë e ndërveprimit të Microsoft Office.

Windows dhe Office përdoren gjerësisht në jetën e përditshme. Njohja e fuqisë së Office/Window dhe PHP do të jetë e dobishme për çdo zhvillues të PHP dhe Windows.

Shtesa PHP COM hap derën për përdorimin e këtij kombinimi.

Vazhdojmë temën e punës me formularët në Word që kemi filluar më herët. Në artikujt e mëparshëm, ne i shikuam format vetëm nga këndvështrimi i një "përdoruesi të avancuar", d.m.th. Ne krijuam dokumente që ishin të lehta për t'u plotësuar me dorë. Sot dua të propozoj zgjerimin e kësaj detyre dhe përpjekjen për të përdorur mekanizmin e kontrolleve të përmbajtjes për të gjeneruar dokumente.

Para se të kalojmë në detyrën tonë të menjëhershme, dua të them disa fjalë se si ruhen të dhënat për kontrollet e përmbajtjes në dokumentet Word (do të heq qëllimisht se si ato janë të lidhura me përmbajtjen e dokumentit tani për tani, por shpresoj të kthehem për këtë diku në artikujt e ardhshëm).

Një pyetje logjike - çfarë është ajo? artikullProps1.xml dhe komponentë të ngjashëm? Këta komponentë ruajnë përshkrimet e burimeve të të dhënave. Me shumë mundësi, siç ishte planifikuar nga zhvilluesit, përveç skedarëve xml të integruar në dokument, duhej të përdoreshin të tjerë, por deri më tani vetëm kjo metodë është zbatuar.

Pse janë të dobishme për ne? artikullPropsX.xml? Fakti që ata rendisin skemat xml (të tyre hapësira e emrave të synuar), të cilat përdoren në prind artikulliX.xml. Kjo do të thotë që nëse kemi përfshirë më shumë se një xml të personalizuar në dokument, atëherë për të gjetur atë që na nevojitet, duhet të kalojmë artikullPropsX.xml komponentët dhe gjeni qarkun e duhur, dhe për rrjedhojë të drejtën artikulliX.xml.

Tani edhe një gjë. Ne nuk do të analizojmë manualisht lidhjet midis komponentëve dhe nuk do të kërkojmë ato që na duhen, duke përdorur vetëm API-në bazë të Paketimit! Në vend të kësaj, ne do të përdorim Open XML SDK (ndërtimet e tij janë të disponueshme përmes NuGet). Sigurisht, ne nuk kemi thënë asnjë fjalë për këtë API më parë, por për detyrën tonë kërkohet minimumi prej tij dhe i gjithë kodi do të jetë mjaft transparent.

Epo, hyrja bazë është bërë, mund të fillojmë me shembullin.

Sipas traditës së vendosur, ne do të marrim të njëjtin "Raport të Takimit" që vizatuam në artikull. Më lejoni t'ju kujtoj se kjo është se si dukej shablloni i dokumentit:

Dhe kjo është XML me të cilën ishin lidhur fushat e dokumentit

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

Hapi 1: Krijoni një model të dhënash

Në fakt, detyra jonë nuk është vetëm të gjenerojmë një dokument, por të krijojmë (të paktën në një version draft) një mjet të përshtatshëm për t'u përdorur si nga zhvilluesi ashtu edhe nga përdoruesi.

Prandaj, ne do ta deklarojmë modelin në formën e një strukture të klasës C#:

Klasa publike MeetingNotes ( Publike MeetingNotes() ( Pjesëmarrësit = Lista e re (); Vendimet = Lista e re (); ) vargu publik Subjekti (merr; vendos;) publik DataTime Data (merr; vendos;) vargu publik Sekretari (merr; vendos;) Lista publike Lista publike e pjesëmarrësve (merr; vendos; ). Vendimet (merr; vendos;)) klasë publike Vendim ( varg publik Problem (merr; vendos; ) varg publik Zgjidhje (merr; vendos; ) varg publik Përgjegjës (merr; vendos;) publik DataTimeData e kontrollit (merr; vendos;)) publike Pjesëmarrësi i klasës ( vargu publik Emri (merr; vendos; ) )

Në përgjithësi, asgjë e veçantë, përveç se atributet janë shtuar për të kontrolluar serializimin XML (pasi emrat në model dhe XML-ja e kërkuar janë paksa të ndryshëm).

Hapi 2: Serializoni modelin e mësipërm në XML

Detyra është, në parim, e parëndësishme. Ajo që quhet "merr XmlSerializer tonë të preferuar dhe shko", nëse jo për një gjë Por

Fatkeqësisht, në versioni aktual Office, me sa duket, ka një gabim, i cili është si më poshtë: nëse është në xml me porosi përpara duke deklaruar hapësirën kryesore të emrave (ajo nga e cila Word duhet të marrë elementë për të shfaqur), deklaroni një tjetër, pastaj kontrollet e përsëritura të përmbajtjes fillojnë të shfaqen gabimisht (vetëm aq elementë tregohen sa në vetë shabllonin - d.m.th. seksioni përsëritës nuk punon ).

ato. Ky është xml që funksionon:

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

dhe kjo gjithashtu:

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

por ky nuk është më aty:

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

Unë u përpoqa të paraqes një gabim në mbështetjen e Microsoft në Connect, por për disa arsye nuk kam akses për të paraqitur gabimet e Office. Dhe diskutimi në forumin MSDN nuk ndihmoi as.

Në përgjithësi, një zgjidhje e nevojshme. Nëse do të kishim krijuar XML me dorë, nuk do të kishte probleme - do të kishim bërë gjithçka vetë. Sidoqoftë, në këtë rast, me të vërtetë dua të përdor XmlSerializer standard, i cili si parazgjedhje shton disa nga hapësirat e tij të emrave në XML-në dalëse, edhe nëse këto hapësira të emrave nuk përdoren.

Ne do të shtypim plotësisht daljen e hapësirave tona të emrave në XmlSerializer. Vërtetë, kjo qasje do të funksionojë vetëm nëse me të vërtetë nuk ka nevojë për to (përndryshe ato do të shtohen akoma dhe vetëm PARA tonat).

Në fakt, i gjithë kodi (me kusht që ndryshorja Shënime të takimit përmban një objekt të mbushur më parë të tipit MeetingNotes):

var serializer = i ri XmlSerializer (lloji (Takimi Shënime));
var serializedDataStream = ri MemoryStream();

var emrat = new XmlSerializerNamespaces();
hapësirat e emrave.Add(“” , “” );

serializator.Serialize(serializedDataStream, takimShënime, hapësira emrash);
serializedDataStream.Seek(0, SeekOrigin.Begin);

Hapi 3. Fusni XML-në që rezulton në një dokument Word.

Këtu vazhdojmë si më poshtë:

  • kopjoni shabllonin dhe hapni kopjen
  • gjeni xml-në e kërkuar të personalizuar në të (kërkoni sipas hapësirës së emrave "urn:MeetingNotes")
  • zëvendësoni përmbajtjen e komponentit me XML-në tonë

File.Copy(emri i shabllonit, emri i rezultatit, i vërtetë); duke përdorur (var dokument = WordprocessingDocument.Open(rezultatiDocumentName, e vërtetë)) ( var xmlpart = document.MainDocumentPart.CustomXmlParts .Single(xmlPart => xmlPart.CustomXmlPropertiesPart.DataStoreItem.SchemaReferences.Of. ().Any(sr => sr.Uri.Value == "urn:MeetingNotes"!}

Të gjithë ne merremi me tekstet në një mënyrë apo në një tjetër. Ndonjëherë ka nevojë për të gjeneruar një sasi të madhe ose jo shumë të madhe teksti për ndonjë detyrë, për shembull, për të luajtur me formatimin, por nuk ka tekst në dorë, ju jeni shumë dembel për ta shkruar vetë. Çfarë duhet bërë? Përgjigja është e thjeshtë: përdorni gjeneratorin e rastësishëm të tekstit të integruar në Word!

Në redaktuesin Microsoft Word, mund të gjeneroni tekst shpejt dhe me lehtësi duke përdorur komanda të veçanta. Unë do të përdor Word 2007 si një derr gini. Këto komanda duhet të funksionojnë në të gjitha versionet e Word. Unë do t'ju tregoj për tre metoda të gjenerimit të tekstit.

Metoda 1: Përdorimi i rand()

Funksioni rand() fut një tekst mostër të lokalizuar, 3 paragrafë nga 3 fjali. Hapni Word-in tuaj, vendosni kursorin aty ku do të shfaqet një grup teksti dhe futni komandën:

dhe shtypni Enter. Vetë funksioni rand do të zhduket dhe në vend të tij do të shfaqen 3 paragrafë të tekstit:

Por kjo nuk është e gjitha. Nëse keni nevojë për shumë tekst, mund të përdorni funksionin rand me argumente shtesë, si kjo:

=rand(x,y)

ku " x"do të thotë numri i paragrafëve, dhe " y"-numri i fjalive në çdo paragraf. Për shembull, =rand(20.5) do të fusë 20 paragrafë me nga pesë fraza secili. A =rand(7) do të fusë 7 paragrafë me nga 3 fjali secili.

Metoda 2: Përdorimi i lorem ()

Për të futur Lorem Ipsum të mirë të vjetër si mostër, përdorni funksionin lorem(). Shkruani komandën e mëposhtme dhe shtypni Enter:

Dhe ne marrim këtë tekst pan-latin

Funksioni lorem() gjithashtu pranon me lehtësi argumente shtesë, si rand(), në formën e numrit të paragrafëve dhe fjalive. Pa argumente, funksioni fut si parazgjedhje 3 paragrafë me nga tre fjali secili.

Metoda 3. funksioni rand.old().

Përdorimi është i ngjashëm me komandat e mëparshme:

=rand.old()

dhe shtypni Enter.

Funksioni rand.old() është lënë për pajtueshmëri me zyrën e vjetër, deri në vitin 2003 përfshirëse. Mënyra e aplikimit është e njëjtë me dy të mëparshmet, vetëm teksti do të përbëhet nga të njëjtat fraza "Hani edhe pak nga këto rrotulla të buta franceze dhe pini pak çaj". Kushdo që ka punuar herë pas here me shkronja e di këtë frazë.

Ju mund të kaloni argumente, si në dy metodat e para.

Kjo është e gjitha, tekstet janë krijuar, tani mund të hani më shumë nga këto rrotulla të buta franceze dhe të pini çaj :)

A keni mundur të ngjisni tekst duke përdorur funksionet e mësipërme?

Një herë pas përmbledhjes së rezultateve të olimpiadës, kur pjesëmarrësve iu kërkua të dërgonin letra me rezultatet e lëndëve të kaluara (ose të dështuara), vura re se një vajzë ishte ulur dhe duke përdorur duart për të futur rezultatet e provimit, emrin e studentit. dhe informacione të tjera në shabllonin e letrës. Përpara saj shtriheshin disa fletë të printuara nga Excel me emra dhe nota. Copy-Paste, Ctrl+C - Ctrl+V, përkthimi i emrit të plotë nga rasja emërore në gjinore, dhe kështu puna tashmë është kryer me gjysmën e të parës nga tre fletët e të dhënave. Sa kohë mendoni se ajo mund të ishte ulur atje duke kopjuar të dhënat dhe më pas duke kontrolluar rezultatin? Mendoj se do të duhej shumë kohë dhe do të kishte mjaft gabime. Por më pas asaj iu desh të firmoste zarfet postare... Më erdhi keq për kohën e saj dhe në pak minuta tregova se si mund të automatizohej ky proces duke përdorur mjete të thjeshta. Pas një ekskursioni të vogël, puna e saj përfundoi në 20 minuta.

Në këtë mësim do t'ju tregoj se si mund të krijoni shpejt dokumente (letra, ftesa) duke shpenzuar një minimum kohe për to. NË versione të ndryshme Ky proces i përshkruar quhet ndryshe në gjuhë të ndryshme. Pra, në rusisht është "Merge", dhe në anglisht është "Merge".

Shpresoj që letrat zinxhir të jenë nga Fondi i pensionit, njoftimet tatimore krijohen në të njëjtën mënyrë :)

Mjetet

Për të krijuar dokumente na duhet OpenOffice Writer. Në të do të krijojmë një shabllon letre. Do t'ju duhet gjithashtu OpenOffice Calc. Në të do të krijojmë një bazë të dhënash me emrat dhe adresat e atyre njerëzve që ne, për shembull, duam t'i ftojmë në një festë. MS Word dhe Excel mund të përdoren lehtësisht në vend të programeve nga paketa OpenOffice. Baza e të dhënave mund të ruhet lehtësisht në MS Access. Dhe kështu, le të fillojmë.

Krijimi i bazës së të dhënave

Një bazë të dhënash nuk është gjë tjetër veçse një tabelë në MS Excel ose OpenOffice Calc ku të dhënat janë të renditura në kolona dhe rreshti i parë përdoret për të emërtuar kolonat. Le të krijojmë, për shembull, kolonat "emri i plotë", "qyteti", "indeksi", "adresa". Futni të dhënat dhe ruani skedarin në disk.



Burime të tjera mund të përdoren gjithashtu si baza të dhënash, të tilla si një libër adresash Outlook ose një bazë të dhënash MS Access.

Krijimi i një modeli letre

Krijimi i një modeli letrash është pak më i komplikuar. Meqenëse të dhënat nga tabela (data e të dhënave jonë) do të futen në shabllon ashtu siç është, letra duhet të shkruhet në përputhje me rrethanat. Nëse emri juaj i plotë është në rastin nominativ në bazën tuaj të të dhënave, atëherë nuk ka gjasa të jeni në gjendje ta përdorni këtë fushë në adresën "E dashur,<ФИО>! dhe për zarfin në rreshtin “Për:<ФИО>" Në rastin e fundit, emri i plotë do të duket disi i ngathët.

Kur kompozoni një shabllon letre, unë rekomandoj të filloni duke i shkruar një letër dikujt ndaj një personi real. Ju mund ta bëni vetë. Më pas theksoni në të të dhënat që do të merrni nga baza e të dhënave dhe zëvendësojeni me fushat përkatëse. Përpara se të zëvendësoni tekstin e zgjedhur në një fushë, unë rekomandoj t'i kushtoni vëmendje me cilën shkronjë duhet të fillojë fusha në bazën e të dhënave (të vogla ose të mëdha). Sigurisht, mund të krijoni një shabllon menjëherë me fushat, por më pas mund të mos vini re disa gabime, siç janë mospërputhjet në raste.



Tashmë në shabllonin e dhënë është e qartë se do të na duhet një emër i plotë në rasën gjinore dhe një fushë që përmban vetëm emrat e parë dhe të mesëm. Me fushën e parë, mund të zëvendësojmë "Për" me "Marrës" dhe më pas emri i plotë në rasën nominative do të na përshtatet shumë. Me fushën e dytë, gjithçka është disi më e ndërlikuar dhe do të duhet të krijojmë një kolonë tjetër në bazën e të dhënave dhe ta plotësojmë me të dhënat e duhura. Në një nga mësimet e ardhshme do t'ju tregoj se si ta bëni këtë automatikisht, por tani për tani do të supozojmë se tashmë kemi një fushë të tillë.

Për të futur një fushë dhe për të lidhur shabllonin me bazën e të dhënave, duhet të kryeni sekuencën e mëposhtme të veprimeve. Në OpenOffice Writer, zgjidhni një bazë të dhënash



dhe klikoni "Përcaktoni".



Pastaj futni një fushë nga baza e të dhënave të lidhura në vendndodhjen e dëshiruar. Për ta bërë këtë, shtypni Ctrl+F2, ose në menunë "Fut" zgjidhni "Fushat" dhe "Tjetër". Në dritaren që hapet, zgjidhni skedën "Bazat e të dhënave", zgjidhni "Fushat e bashkimit të postës" në llojin e fushës, zgjidhni fushën e duhur nga baza e të dhënave dhe klikoni "Fut". Baza e të dhënave aktuale gjithashtu mund të zgjidhet në këtë dritare.



Pasi të jetë futur një fushë, mundeni, pa e mbyllur dritaren aktuale, të zgjidhni tekstin për ta zëvendësuar me fushën tjetër, të zgjidhni fushën dhe të klikoni përsëri "Fut". Dhe kështu me radhë për secilën nga fushat.

Për MS Word situata është disi e ngjashme dhe, mbase, më e përshtatshme. Pasi të krijoni tabelën në MS Excel, filloni MS Word dhe shkoni te skedari "Shpërndarjet". Në këtë skedë mund të shihni tre hapa të nevojshëm: "Filloni një bashkim", "Krijoni një dokument dhe futni fushat" dhe "të plotë". Ekziston gjithashtu një hap i ndërmjetëm "Rezultati i shikimit", por është opsional.

Dhe kështu puna fillon me zgjedhjen e një dokumenti. Këto mund të jenë letra, ngjitëse ose një dokument i rregullt Word. Ju mund të hapni menjëherë magjistarin e bashkimit, i cili do t'ju udhëheqë në të gjitha fazat e procesit. Hapi tjetër është të zgjidhni marrësin, domethënë bazën e të dhënave. Këtu mund të zgjidhni një bazë të dhënash të gatshme (për shembull, një tabelë MS Excel e krijuar në fazën e mëparshme), ose të krijoni një listë të re. Pasi të zgjidhet lista aktivizohen butonat “Fut fushën e bashkimit”, “Ndrysho listën e marrësve” etj.. Përmes dialogut “Ndrysho listën e marrësve” që hapet me butonin përkatës, mund të zgjedhësh nga e gjithë lista. vetëm të dhënat e nevojshme për bashkim.







Gjatë futjes së fushave, më duket e përshtatshme të theksoj të gjitha fushat në gri duke klikuar në butonin "Thekso Merge Fields". Përndryshe, nëse ka shumë fusha të tilla, ato mund të humbasin në tekst.

Dhe kështu, shablloni është gati.

Gjenerimi i letrave

Faza e fundit është gjenerimi i letrave. Në OpenOffice, për ta bërë këtë, në menynë "Tools", zgjidhni "Mail Merge Wizard..." dhe kaloni të gjithë hapat e propozuar për bashkimin e shabllonit tonë me bazën e të dhënave.





Në kutinë e dialogut shohim se nga 8 pikat e propozuara, nuk kemi pse të realizojmë disa pika. Pra, ne kemi krijuar tashmë dokumentin dhe nuk kemi nevojë ta modifikojmë atë, ne gjithashtu kemi futur tashmë bllokun e adresave. Por le t'i marrim gjërat me radhë.

Së pari, zgjidhni që po krijojmë shkronja bazuar në dokumentin aktual dhe klikoni "Next" në fund të dritares. Pika e dytë është të zgjedhim nëse do ta kemi këtë letër letre apo e-mail. Në mënyrë që letra të ruhet në një skedar, duhet të zgjidhni të parën. Klikoni "Next". Pika e tretë na kërkon të krijojmë një bllok adresash, por duke qenë se e krijuam manualisht, zgjidhim të gjitha kutitë dhe kalojmë në hapin tjetër. Këtu na kërkohet të fusim një kërkesë, por tashmë e kemi një, kështu që klikojmë "Next". Pika e gjashtë është të redaktoni dokumentin, të shikoni dokumentin me fusha të futura nga baza e të dhënave dhe, nëse është e nevojshme, të përjashtoni disa fusha.



Hapi 7 ju kërkon të redaktoni secilin nga skedarët e krijuar si rezultat i lidhjes së shabllonit me bazën e të dhënave. Dhe së fundi, në hapin e fundit, të 8-të, mund të zgjidhni se çfarë të bëni me dokumentet e marra. Mund të ruani, printoni ose dërgoni me e-mail. Në këtë rast, ju mund t'i ruani të gjitha dokumentet në një skedar, ose secilin dokument veç e veç.

Në MS Word, procesi i bashkimit përfundon duke klikuar butonin Gjeni dhe Bashkoj.



Nga menyja rënëse është e qartë se të gjitha letrat mund të printohen dhe dërgohen me e-mail, por nuk është e qartë se të gjitha ato mund të ruhen në një skedar. Për të kursyer, duhet të zgjidhni artikullin e parë - "Ndrysho dokumentet individuale". Kjo do të hapë një dokument të ri, në të cilin çdo shkronjë e re do të vendoset në një faqe të re, dhe këtu mund të ruhet ky skedar.

konkluzioni

Dhe kështu, në këtë mësim mësuat se si të përdorni mjetin e bashkimit për të krijuar dokumente bazuar në një shabllon. Le të shkruajmë shkurtimisht sekuencën e veprimeve:

  1. Është e nevojshme të krijohet një bazë të dhënash në një procesor tabele nga e cila do të merren të dhënat për plotësimin e fushave.
  2. Ju duhet të krijoni një model letre.
  3. Kryeni bashkimin dhe ruani rezultatin.

A, mbiemrat në kolonë B dhe profesionet në kolonë C.

2. Krijo një dokument Word (.doc ose .docx)


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

(A), (B) Dhe (C) (A)- emri, (B)- mbiemri, (C)- profesion.

Cilësimet programet.

3. Zgjidhni shtigjet për skedarët dhe dosjet


Zgjidhni

4. Specifikoni fletët dhe rreshtat e të dhënave të kërkuara


Fletët e të dhënave të skedarëve Excel

Rreshtat e të dhënave të skedarëve Excel Fletët e të dhënave të skedarëve Excel

1 .

Nëse dëshironi që të gjitha fletët dhe/ose rreshtat e skedarit tuaj excel me të dhëna të marrin pjesë në formimin e dokumentit, klikoni në butonin përkatës me mbishkrimin në të djathtë Numrat(mbishkrimi i tij do të ndryshojë në Të gjitha).

5. Vendosni një shabllon për emërtimin e skedarëve të rinj të fjalëve


Vendosni modelin e emërtimit për skedarët e rinj të fjalëve:

Modeli i ri i emrave të skedarëve të fjalëve- ky është një shabllon për emrat e dokumenteve të reja (skedarët Word) të krijuara nga programi. Këtu modeli i emrit përmban emrat e kolonave të skedarit excel, të rrethuar me kllapa kaçurrelë: (A) Dhe (B). Kur krijoni një dokument të ri, programi do të zëvendësojë gjithçka (A) Dhe (B) vlerat përkatëse të qelizave nga skedari excel - ky do të jetë emri i dokumentit të ri (skedari Word).

Ju mund të vendosni karakteret tuaja të inkuadrimit në skedën Cilësimet programet.

6. Klikoni "Gjeneroni"


Klikoni butonin Gjeneroni dhe progresi do të shfaqet në ekran. Do të krijohen saktësisht aq dokumente (skedarë word) sa numri i rreshtave në skedarin excel të përfshirë në formim.

7. Gjithçka


Të gjithë dokumentet (skedarët Word) janë krijuar dhe ndodhen në dosjen e specifikuar në Dosja për të ruajtur skedarët e rinj të fjalës. Te gjitha :)

Ekswog- gjeneratori i raporteve nga Excel në Word duke përdorur një shabllon

Gjenerues falas i skedarëve Word duke përdorur një shabllon (skedar Word) bazuar në të dhënat e skedarit Excel

Punon në Mac OS, Windows dhe Linux

Ju lejon të vendosni emrat e skedarëve të rinj të fjalëve të krijuara

Ju lejon të specifikoni fletët dhe rreshtat e të dhënave të kërkuara

Ju lejon të specifikoni karakteret përreth për emrat e kolonave në Excel

Lehtë për t'u përdorur

Ruani të dhënat tuaja në formatin Excel (.xls dhe .xlsx) dhe gjeneroni skedarë Word (.doc dhe .docx) me disa klikime :)


Si punon?

Hidhini një sy skedarit tuaj excel


Në këtë shembull, skedari excel përmban informacione për klientët. Çdo linjë korrespondon me një klient specifik. Emrat janë renditur në një kolonë A, mbiemrat në kolonë B dhe profesionet në kolonë C.

Klikoni për të parë

Krijo një dokument Word (.doc ose .docx)


Klikoni për të parë

Krijoni një "shabllon" (skedar Word) për gjenerimin e dokumenteve të reja (skedarët Word). Këtu teksti "shabllon" përmban emrat e kolonave të skedarit excel, të rrethuar me kllapa kaçurrelë: (A), (B) Dhe (C).

Programi do të gjenerojë dokumente të reja sipas "shabllonit" duke zëvendësuar të gjitha (A), (B) Dhe (C) vlerat përkatëse të qelizave nga skedari excel: (A)- emri, (B)- mbiemri, (C)- profesion.

Ju gjithashtu mund të vendosni karakteret tuaja të inkuadrimit në skedën Cilësimet programet.

Zgjidhni shtigjet për skedarët dhe dosjet


Zgjidhni shtigjet për skedarët dhe dosjet (butonat e emërtuar Zgjidhni). Në program ju specifikoni shtigjet e mëposhtme:

Skedar Excel me të dhëna (*.xls, *.xlsx)- kjo është rruga drejt skedarit tuaj Excel me të dhëna (informacione të klientit);

Skedari i shabllonit të Word (*.doc, *.docx)- kjo është rruga drejt "shabllonit" tuaj (skedari i fjalës i krijuar në hapin e mëparshëm);

Dosja për të ruajtur skedarët e rinj të fjalës- kjo është rruga drejt dosjes në të cilën programi do të ruajë dokumente të reja të krijuara.

Klikoni për të parë

Specifikoni fletët dhe rreshtat e të dhënave të kërkuara


Klikoni për të parë

Specifikoni numrat e fletëve dhe rreshtave të skedarit tuaj excel me të dhëna (informacione të klientit) për të cilat dëshironi të gjeneroni dokumente:

Fletët e të dhënave të skedarëve Excel- numrat e fletëve të skedarit tuaj excel që do të marrin pjesë në formimin e dokumenteve të reja;

Rreshtat e të dhënave të skedarëve Excel- numrat e rreshtave të fletëve (fletët e specifikuara në Fletët e të dhënave të skedarëve Excel) të skedarit tuaj excel i cili do të marrë pjesë në gjenerimin e dokumenteve të reja. Bazuar në të dhënat e çdo rreshti të specifikuar, do të krijohet një dokument i veçantë (skedar word).

Numërimi i fletëve dhe rreshtave në program fillon me 1 .