Kuidas Wordis dokumente genereerida. Exwog – aruannete generaator Excelist Wordi malli järgi

Me elame maailmas, kus PHP arendajad peavad aeg-ajalt Windowsi operatsioonisüsteemiga suhtlema. WMI (Windowsi haldusliides) on üks selline näide – suhtlemine Microsoft Office’iga.

Selles artiklis vaatleme lihtsat integreerimist Wordi ja PHP vahel: Microsoft Wordi dokumendi genereerimine sisendväljadest HTML-vormingus PHP (ja selle laienduse Interop) abil.

Ettevalmistavad sammud

Esimene samm on veenduda, et meil on seadistatud põhiline WAMP-keskkond. Kuna Interop on saadaval ainult Windowsis, vajame Apache-serverit ja PHP installimist Windowsi masinasse. Selles funktsioonis kasutan EasyPHP 14.1, mida on äärmiselt lihtne paigaldada ja seadistada.

Järgmine samm on Microsoft Office'i installimine. Versioon pole eriti oluline. Kasutan Microsoft Office 2013 Pro, kuid kõik Office'i versioonid, mis on vanemad kui 2007, peaksid töötama.

Samuti peate veenduma, et meil on Interop-rakenduse arendamiseks installitud teegid (PIA, Primary Interop Assemblies, Basic Interop Assemblies). Selle saate teada, avades Windows Exploreri ja minnes kataloogi \ koost ja seal peaksime nägema installitud sõlmede komplekti:

Microsoft.Office.Interop.Wordi elementi näete siin (ekraanipildil alla joonitud). See on koost, mida me oma demos kasutame. Pöörake erilist tähelepanu väljadele „Kokku nimi“, „Versioon“ ja „Avaliku võtme tunnus“. Varsti kasutame neid oma PHP-skriptis.

See kataloog sisaldab ka muid komplekte (sh kogu Office'i perekond), mis on nende programmides kasutamiseks saadaval (mitte ainult PHP, vaid ka VB.net, C # jne jaoks).

Kui komplekteerimisloend ei sisalda kogu Microsoft.Office.Interop-paketti, peame Office'i PIA lisamise teel uuesti installima või paketi Microsoftist käsitsi alla laadima ja installima. Üksikasjalikumad juhised leiate sellelt MSDN-i lehelt.

kommenteerida: allalaadimiseks ja installimiseks on saadaval ainult Microsoft Office 2010 PIA levitamiskomplekt. Selle paketi komplektide versioon on 14.0.0 ja versioon 15 on saadaval ainult Office 2013-ga.

Lõpuks peate failis php.ini lubama laienduse php_com_dotnet.dll ja taaskäivitama server.

Nüüd saate programmeerimist alustada.

HTML vorm

Kuna suurem osa sellest näitest langeb serveri poolele, loome lihtsa lehe, mille vorm näeb välja järgmine:

Meil on tekstiväli nime jaoks, raadionuppude rühm soo jaoks, liugur vanuse jaoks ja tekstisisestusala sõnumi sisestamiseks, samuti kurikuulus nupp “Saada”.

Salvestage see fail virtuaalsesse hostikataloogi nimega "index.html", et sellele pääseks juurde aadressilt http://test / test / interop.

Serveri osa

Meie vestluse keskmes on serveripoolne töötleja fail. Alustuseks annan ma selle faili täieliku koodi ja seejärel selgitan seda samm-sammult.

nähtav = tõsi; $ fn = __DIR__. "\\ mall.docx"; $ d = $ w-> Dokumendid-> Ava ($ fn); kaja "Dokument on avatud.


"; $ flds = $ d-> Väljad; $ count = $ flds-> Count; echo" Dokumendis on $ loendusväljad.
"; kaja"
    "; $ vastendus = häälestusväljad (); foreach ($ flds kui $ indeks => $ f) ($ f-> Vali (); $ klahv = $ vastendamine [$ indeks]; $ väärtus = $ sisendid [$ klahv]; if ($ klahv == "sugu") (if ($ väärtus == "(! LANG: m") $value = "Härra."; else $value = "Prl."; } if($key=="printdate") $value= date ("Y-m-d H:i:s"); $w->Selection->TypeText($value); echo "!}
  • Määran $ väärtusele välja $ index: $ võti
  • ";) kaja"
"; kaja" Töötlemine on lõpetatud!

"; kaja" Tippimine, palun oodake ...
"; $ d-> PrintOut (); uni (3); kaja" Valmis! "; $ w-> Välju (false); $ w = null; funktsiooni seadistusväljad () ($ vastendus = massiiv (); $ vastendus = "gender"; $ mapping = "nimi"; $ mapping = "vanus"; $ mapping = "sõnum"; $ mapping = "printdate"; tagasta $ vastendus;)

Pärast seda, kui oleme vormilt saadud väärtused sisestanud muutujasse $ ja loonud ka tühja elemendi printdate võtmega (miks me seda tegime - sellest räägime hiljem), liigume edasi neljale väga olulisele reale:

$ assembly = "Microsoft.Office.Interop.Word, versioon = 15.0.0.0, kultuur = neutraalne, PublicKeyToken = 71e9bce111e9429c"; $ class = "Microsoft.Office.Interop.Word.ApplicationClass"; $ w = uus DOTNET ($ koost, $ klass); $ w-> nähtav = tõene;

PHP COM-i manipulaator nõuab klassi instantseerimist "assamblee" sees. Meie puhul töötame Wordiga. Kui vaatate esimest ekraanipilti, saate kirja panna Wordi täieliku koostesignatuuri:

  • "Nimi", "Version", "Public Key Token" on kõik võetud teabest, mida saab vaadata jaotises "c: \ Windows \ assembly".
  • "Kultuur" on alati neutraalne

Klass, millele soovime viidata, kannab alati nime "koostu nimi" + ".ApplicationClass".

Seades need kaks parameetrit, saame Wordiga töötamiseks objekti.

See objekt võib jääda taustale või käivitada selle, määrates atribuudi nähtava väärtuseks Tõene.

Järgmine samm on avada töötlemist vajav dokument ja kirjutada muutujasse $ d "dokumendi" eksemplar.

Dokumendi vormiandmete põhjal sisu loomiseks on mitu võimalust.

Kõige hullem oleks dokumendi sisu PHP-s kõvasti kodeerida ja seejärel Wordi dokumenti väljastada. Soovitan tungivalt seda mitte teha järgmistel põhjustel:

  1. Sa kaotad paindlikkuse. Kõik muudatused väljundfailis nõuavad PHP-koodi muutmist.
  2. See katkestab kontrolli ja vaate eraldamise
  3. Skriptis laadide rakendamine dokumendi sisule (joondus, fondid, stiilid jne) suurendab oluliselt koodiridade arvu. Stiilide programmiline muutmine on liiga tülikas.

Teine võimalus oleks leida ja asendada. PHP-l on selleks head sisseehitatud võimalused. Saame luua Wordi dokumendi, kuhu asetame spetsiaalsete eraldusmärkidega sildid, mis hiljem asendatakse. Näiteks saame luua dokumendi, mis sisaldab järgmist fragmenti:

ja PHP-ga saame selle lihtsalt asendada vormilt saadud välja "Nimi" sisuga.

See on lihtne ja säästab meid kõigist ebameeldivatest tagajärgedest, millega me esimese meetodi puhul silmitsi seisame. Peame lihtsalt otsustama õige eraldaja üle, sel juhul kasutame malli.

Soovitan kolmandat viisi ja see põhineb Wordi sügavamal tundmisel. Kasutame välju kohahoidjatena ja PHP-koodi abil värskendame väljade väärtusi otse vastavate väärtustega.

See lähenemisviis on paindlik, kiire ja kooskõlas Wordi parimate tavadega. Samuti väldib see täistekstiotsingut dokumendis, mis on jõudluse jaoks hea. Pange tähele, et sellel lahendusel on ka puudusi.

Word ei toetanud algusest peale väljade nimelisi indekseid. Isegi kui oleme määranud loodavatele väljadele nimed, peame siiski kasutama nende väljade numbrilisi identifikaatoreid. See selgitab ka, miks peame kasutama eraldi funktsiooni (setupfields), et vastendada välja indeks vormilt välja nimega.

Selles demoõpetuses kasutame 5 MERGEFIELD-väljaga dokumenti. Asetame mallidokumendi samasse kohta, kus meie skriptitöötleja.

Pange tähele, et väljale printdate ei ole vormil vastavat välja. Seetõttu lisasime $ sisendite massiivi tühja printdate elemendi. Ilma selleta skript ikka töötab ja töötab, kuid PHP annab hoiatuse, et printdate indeks puudub $ sisendite massiivist.

Pärast väljade asendamist uute väärtustega prindime dokumendi kasutades

$ d-> väljatrükk ();

PrintOut meetodil on mitu valikulist parameetrit ja me kasutame selle kõige lihtsamat vormi. See prindib ühe dokumendi koopia Windowsi masinaga ühendatud vaikeprinteriga.

Saate helistada ka PrintPreview'le, et vaadata saadud väljundit enne selle printimist. Täisautomaatses keskkonnas kasutame loomulikult PrintOut meetodit.

Enne Wordist väljumist peate veidi ootama, kuna prinditöö järjekorda panemine võtab aega. Viivituseta (3) käivitatakse meetod $ w-> Quit kohe ja tööd ei panda järjekorda.

Lõpuks kutsume välja $ w-> Quit (false), mis sulgeb Wordi rakenduse, mille meie skript kutsus. Ainus meetodile edastatud parameeter on käsk fail enne väljumist salvestada. Tegime dokumendis muudatusi, kuid me ei soovi neid salvestada, kuna vajame hilisemaks tööks puhast malli.

Kui oleme koodiga valmis saanud, saame laadida oma vormilehe, täita mõned väärtused ja selle esitada. Allolevad pildid näitavad skripti väljundit ja värskendatud Wordi dokumenti:

Töötlemiskiiruse parandamine ja natuke rohkem PIA-st

PHP on nõrgalt trükitud keel. COM-objekt tüüpi Object. Skripti kirjutamise ajal ei ole meil võimalust saada objekti kirjeldust, olgu selleks Wordi rakendus, dokument või väli. Me ei tea, millised omadused sellel objektil on või milliseid meetodeid see toetab.

See aeglustab oluliselt arengukiirust. Arengu kiirendamiseks soovitaksin kirjutada funktsioonid esmalt C # keeles ja seejärel tõlkida kood PHP-sse. Võin soovitada C # arenduse jaoks tasuta IDE-d nimega “#develop”. Leiate selle. Eelistan seda Visual Studiole, sest #develop on väiksem, lihtsam ja kiirem.

C # koodi migreerimine PHP-sse pole nii hirmutav, kui see kõlab. Lubage mul näidata teile paar rida C #-s:

Word.Application w = uus Word.Application (); w.Nähtav = tõene; Stringi tee = Application.StartupPath + "\\ template.docx"; Word.Document d = w.Dokumendid.Ava (tee) kui Word.Document; Word.Fields flds = d.Fields; int len ​​= flds.Count; foreach (Word.Field f in flds) (f.Select (); int i = f.Index; w.Selection.TypeText ("...");)

Märkate, et C # kood on väga sarnane PHP-koodiga, mida ma varem näitasin. C # on tugevasti trükitud keel, nii et selles näites märkate mitut castingoperaatorit ja muutujad tuleb sisestada.

Määrates muutuja tüübi, saate nautida selgemat koodi ja automaatset lõpetamist ning arenduskiirus suureneb oluliselt.

Teine viis PHP arendamise kiirendamiseks on makro kutsumine Wordis. Viime läbi sama toimingute jada ja salvestame selle seejärel makrona. Makro on kirjutatud Visual Basicus, mida on ka lihtne PHP-sse tõlkida.

Ja mis kõige tähtsam, Microsofti Office'i PIA dokumentatsioon, eriti iga Office'i rakenduse nimeruumi dokumentatsioon, on kõige üksikasjalikum võrdlusmaterjal. Kolm enimkasutatavat rakendust on:

  • 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

Järeldus

Selles artiklis näitasime teile, kuidas täita Wordi dokumenti andmetega, kasutades PHP COM-i teeke ja Microsoft Office'i koostalitlusvõimet.

Windows ja Office on igapäevaelus laialdaselt kasutusel. Office / Window ja PHP võimsuse tundmine on kasulik igale PHP ja Windowsi arendajale.

PHP COM laiendus avab teile võimaluse seda kombinatsiooni kasutada.

Jätkame varem alustatud Wordi vormidega töötamise teemat. Varasemates artiklites vaatlesime vorme ainult “arenenud kasutaja” vaatenurgast, st. oleme loonud dokumendid, mida on lihtne käsitsi täita. Täna tahan teha ettepaneku seda ülesannet laiendada ja proovida dokumentide loomiseks kasutada sisukontrolli mehhanismi.

Enne kui asume oma vahetu ülesande juurde, tahan öelda paar sõna selle kohta, kuidas sisu juhtelementide andmeid Wordi dokumentides salvestatakse (jätan praegu teadlikult välja, kuidas need on seotud dokumendi sisuga, kuid loodan naasta sellele millalgi järgmistes artiklites).

Loomulik küsimus – mis on itemProps1.xml ja sarnased komponendid? Need komponendid salvestavad andmeallikate kirjeldused. Tõenäoliselt pidi see, nagu arendajad plaanisid, lisaks dokumenti manustatud xml-ek-ile kasutama ka teisi, kuid seni on rakendatud ainult seda meetodit.

Mis on meile kasulikud itemPropsX.xml? Asjaolu, et nad loetlevad xml-skeemid (nende targetNamespace), mida kasutatakse vanemas itemX.xml... See tähendab, et kui oleme dokumendiga ühendanud rohkem kui ühe kohandatud xml-i, siis vajaliku leidmiseks peame läbima itemPropsX.xml komponendid ja leida soovitud vooluring ja seega ka soovitud itemX.xml.

Nüüd veel üks asi. Me ei hakka käsitsi komponentide vahelisi seoseid analüüsima ja vajalikke otsima ainult põhilise Packaging API abil! Selle asemel kasutame Open XML SDK-d (selle komplektid on saadaval NuGeti kaudu). Muidugi ei rääkinud me varem selle API kohta sõnagi, kuid meie ülesande jaoks on sellelt nõutav miinimum ja kogu kood on üsna läbipaistev.

Noh, põhiline sissejuhatus on tehtud, võite alustada näitega.

Traditsiooniliselt võtame sama “Kohtumise aruande”, mille joonistasime artiklis. Tuletan meelde, et dokumendimall nägi välja selline:

Ja niimoodi XML, millega dokumendiväljad olid seotud

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

Samm 1. Andmemudeli loomine

Tegelikult pole meie ülesanne lihtsalt dokumenti genereerida, vaid luua (vähemalt mustandversioonis) mugav tööriist, mida saaks kasutada nii arendaja kui ka kasutaja.

Seetõttu deklareerime mudeli C # klasside struktuurina:

Avalik klassi koosolekute märkmed (avalikud koosolekute märkmed () (osalejad = uus nimekiri (); Otsused = uus nimekiri (); ) public string Subject (get; set;) public DateTime Date (get; set;) public string Secretary (get; set;) public List Osalejad (saada; seada;) avalik nimekiri Otsused (get; set;)) avalik klass Otsus (avalik string Probleem (get; set;) public string Lahendus (get; set;) public string Vastutav (get; set;) public DateTime ControlDate (get; set;)) public klass Osaleja (avalik stringi nimi (saada; määrata;))

Üldiselt ei midagi erilist, välja arvatud atribuutide lisamine XML-i serialiseerimise juhtimiseks (kuna mudelis olevad nimed ja nõutav XML on veidi erinevad).

2. samm. Jada ülaltoodud mudel XML-i

Ülesanne on põhimõtteliselt triviaalne. Mida nimetatakse "võtke meie lemmik XmlSerializer ja minge", kui mitte üks aga

Kahjuks näib Office'i praegusel versioonil olevat viga, mis on järgmine: kui kohandatud xml ees deklareerides peamise nimeruumi (see, kust Word peaks kuvamiseks elemente võtma), deklareerige veel üks, siis hakkavad korduvad sisu juhtelemendid valesti kuvama (kuvatakse ainult nii palju elemente kui mallis endas - st jaotise kordamine ei tööta ).

Need. see xml töötab:

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

ja see ka:

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

aga see pole enam:

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

Üritasin Connecti Microsofti toele vea esitada, kuid mingil põhjusel ei ole mul juurdepääsu Office'i kaudu vigade esitamiseks. Ja ei aidanud ka arutelu MSDN foorumis.

Üldiselt vajalik ringtee manööver. Kui moodustaksime XML-i käsitsi, poleks probleeme – oleksime kõik ise teinud. Sel juhul tahan aga väga kasutada standardset XmlSerializerit, mis vaikimisi lisab väljundisse XML-i mitu oma nimeruumi, isegi kui neid nimeruume ei kasutata.

Me blokeerime XmlSerializeris oma nimeruumide väljundi täielikult. Tõsi, see lähenemine töötab ainult siis, kui tal neid tõesti vaja pole (muidu lisatakse need ikkagi ja just ENNE meie oma).

Tegelikult kogu kood (eeldusel, et muutuja koosolekumärkmed sisaldab varem täidetud MeetingNotesi objekti):

var serializer = uus XmlSerializer (tüüp (MeetingNotes));
var serializedDataStream = uus MemoryStream ();

var namespaces = new XmlSerializerNamespaces ();
nimeruumid.Lisa (“”, “”);

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

Samm 3. Sisestage saadud XML Wordi dokumenti.

Siin teeme järgmist:

  • kopeerige mall ja avage koopia
  • leidke sellest vajalik kohandatud xml (otsige nimeruumi järgi "Urn: koosoleku märkmed")
  • asendada komponendi sisu meie XML-iga

File.Copy (templateName, resultDocumentName, true); using (var document = WordprocessingDocument.Open (resultDocumentName, true)) (var xmlpart = document.MainDocumentPart.CustomXmlParts .Single (xmlPart => xmlPart.CustomXmlPropertiesPart.DataStoreItem.OfTReferencyes. () .Any (sr => sr.Uri.Value == "(! LANG: urn: koosolekumärkmed"!}

Sarja "Dokumentide täitmise automatiseerimine" eelmistes artiklites rääkisin, kuidas luua rakenduse kasutajaliidest, korraldada sisendandmete valideerimist ja saada arv sõnadega ilma VBA koodi kasutamata. Selles viimases artiklis räägime maagiast - kõigi vajalike väärtuste ülekandmisest Exceli töövihikust Wordi dokumenti. Lubage mul näidata teile, mis peaks olema tulemus:

Mehhanismi kirjeldus

Alustuseks kirjeldan üldiselt, kuidas andmed Wordi dokumenti kantakse. Kõigepealt vajame Wordi dokumendimalli, mis sisaldab kõiki märgistusi, tabeleid ja seda osa tekstist, mis jääb muutumatuks. Selles mallis peate määrama kohad, kus Exceli töövihiku väärtused asendatakse - kõige mugavam viis seda teha on järjehoidjate kasutamine. Pärast seda peate korraldama Exceli andmed nii, et need vastaksid Wordi mallile, ja lõpuks kirjutage edastusprotseduur ise VBA-sse.

Niisiis, esimesed asjad kõigepealt.

Looge Wordi dokumendimall

Siin on kõik äärmiselt lihtne - loome tavalise dokumendi, trükime ja vormindame teksti, üldiselt püüame saada vajalikku vormi. Nendes kohtades, kus on vaja Exceli väärtusi asendada, peate looma järjehoidjad. Seda tehakse järgmiselt.

Seega peate looma kõik järjehoidjad, st märkima kõik kohad, kuhu Exceli andmed sisestatakse. Saadud fail tuleb salvestada "MS Wordi mallina", kasutades menüükäsku "Fail" -> "Salvesta kui ...".

Exceli andmete ettevalmistamine

Mugavuse huvides otsustasin paigutada kõik andmed, mis tuleb Wordi dokumenti üle kanda, eraldi töölehel nimega Järjehoidjad - järjehoidjad. Sellel lehel on kaks veergu: esimene sisaldab järjehoidjate nimesid (täpselt nii, nagu need on Wordi dokumendis nimetatud), ja teine ​​sisaldab vastavaid mähitavaid väärtusi.

Mõned neist väärtustest saadakse otse andmesisestuse lehelt ja mõned tugilehel asuvatest abitabelitest. Selles artiklis ma ei analüüsi valemeid, mis arvutavad nõutavad väärtused, kui midagi pole selge - esitage kommentaarides küsimusi.

Selles etapis on oluline õigesti märkida kõik järjehoidjate nimed - sellest sõltub andmeedastuse õigsus.

Ülekandmise protseduur

Kuid see on kõige huvitavam. Andmeedastuskoodi täitmiseks on kaks võimalust:

  • Kood täidetakse Exceli töövihikus, andmed edastatakse Wordile ükshaaval ja paigutatakse kohe dokumenti.
  • Kood täidetakse eraldi Wordi dokumendis, kõik andmed kantakse Excelist üle ühe partiina.

Täitmise kiiruse seisukohast, eriti suure hulga järjehoidjate puhul, tundub teine ​​​​võimalus palju atraktiivsem, kuid see nõuab keerukamaid toiminguid. Seda ma kasutasin.

Peate tegema järgmist.

  • Looge makro toega Wordi dokumendimall. See mall sisaldab käivitatavat VBA koodi.
  • Loodud malli peate paigutama VBA-s kirjutatud programmi. Selleks vajutage malli redigeerimisel klahvikombinatsiooni Alt + F11 ja sisestage avanenud Visual Basicu redaktori aknasse programmi kood.
  • Kirjutage Exceli töövihikusse kood, mis kutsub vastloodud Wordi mallist täitmisprotseduuri.

Ma ei esita artiklis protseduuri teksti - seda saab hõlpsasti vaadata failis FillDocument.dotm, mis asub näitega arhiivi kaustas Mall.

Kuidas saate seda kõike oma konkreetse probleemi lahendamiseks kasutada?

Ma saan aru, et sõnades tundub see kõik väga lihtne, aga mis juhtub praktikas? Soovitan teil kasutada lihtsalt valmisvalikut. Laadige arhiiv alla koos näitega, Exceli töövihikus vajutage Visual Basicu redaktori avamiseks Alt + F11 ja lugege kõiki minu kommentaare programmi kohta. Programmi enda vajadustele vastavaks muutmiseks tuleb lihtsalt muuta mitme konstandi väärtust, need paigutatakse programmi algusesse. Saate kogu programmi teksti vabalt oma projekti kopeerida.

Arhiivi struktuur

Sellele artiklile lisatud arhiiv sisaldab mitut faili.

Põhifail on Exceli töövihik nimega "Kinnituste loomine". Selles töövihikus on 4 töölehte, millest kuvatakse ainult kaks: "Sisend" - andmesisestusleht ja "Andmebaas" - kõigi sisestatud dokumentide arhiiv.

Mallide kaust sisaldab Wordi dokumendimalle. Üks on mall, mis sisaldab järjehoidjate täitmise programmi, ja teine ​​on vorm, mida täita. Malli saate programmiga muudatusteta kasutada, kuid täitmise vorm tuleb loomulikult vastavalt teie vajadustele ümber teha.

Kuidas näidet "enese jaoks" ümber töötada?

  1. Valmistage ette Wordi dokumendimall, mille peate täitma. Looge sinna kõik vajalikud järjehoidjad ja salvestage see "MS Wordi mallina".
  2. Kopeerige sellele artiklile lisatud arhiivist fail FillDocument.dotm ettevalmistatud malliga kausta. See fail vastutab malli järjehoidjate täitmise eest ja te ei pea selles midagi muutma.
  3. Valmistage andmete sisestamiseks ette Exceli töövihik. Teie otsustada, kas sellel on "täiustatud" kasutajaliides, ja teha erinevaid nutikaid arvutusi. Peaasi, et see sisaldab töölehte Wordi mallis oleva järjehoidja nime ja asendatava väärtuse vastavustabeliga.
  4. Sisestage VBA programmi kood näidisfailist ettevalmistatud töövihikusse. Asendage kõik konstandid vastavalt oma projektile.
  5. Testige töö õigsust.
  6. Kasutage seda aktiivselt!

A, perekonnanimed veerus B ja ametid veerus C.

2. Looge Wordi dokument (.doc või.docx)


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

(A), (B) ja (C) (A)- nimi, (B)- perekonnanimi, (C)- elukutse.

Seaded programmid.

3. Valige failide ja kaustade teed


Valige

4. Määrake soovitud andmete lehed ja read


Exceli faili andmelehed

Exceli faili andmeread Exceli faili andmelehed

1 .

Kui soovite, et teie Exceli faili kõik lehed ja/või read andmetega osaleksid dokumendi moodustamises, klõpsake parempoolset kirjaga nuppu Numbrid(sel juhul muutub selle pealdis järgmiseks Kõik).

5. Määrake uute sõnafailide nimede mall


Määrake uute sõnafailide nimede mall:

Uute sõnafailide nimede mall on mall programmi poolt genereeritud uute dokumentide (wordifailide) nimede jaoks. Siin sisaldab nimemall Exceli faili veergude nimesid, mis on ümbritsetud lokkis sulgudega: (A) ja (B)... Uue dokumendi loomisel asendab programm kõik (A) ja (B) vastavad lahtri väärtused Exceli failist - see on uue dokumendi (Word-faili) nimi.

Saate vahekaardil määrata raamimissümbolid Seaded programmid.

6. Klõpsake nuppu "Loo".


Klõpsake nuppu Genereeri ja edenemine kuvatakse ekraanile. Dokumentide (word-failide) arv luuakse täpselt nii palju Exceli faili ridu on moodustatud.

7. Kõik


Kõik dokumendid (Word-failid) on loodud ja asuvad määratud kaustas Kaust uute sõnafailide salvestamiseks... Kõik :)

Exwog - aruannete generaator Excelist Wordi malli järgi

Wordi failide tasuta generaator mallist (Word-fail), mis põhineb Exceli failiandmetel

Töötab operatsioonisüsteemides Mac OS, Windows ja Linux

Võimaldab määrata uute loodud sõnafailide nimed

Võimaldab määrata soovitud andmete lehti ja ridu

Võimaldab määrata Exceli veergude nimedele ümbritsevaid märke

Lihtne kasutada

Salvestage oma andmed Exceli vormingus (.xls ja .xlsx) ning genereerige Wordi failid (.doc ja .docx) mõne klõpsuga :)


Kuidas see töötab?

Vaadake oma Exceli faili


Selles näites sisaldab Exceli fail klienditeavet. Iga rida vastab konkreetsele kliendile. Nimed asuvad veerus A, perekonnanimed veerus B ja ametid veerus C.

Vaatamiseks klõpsake

Looge Wordi dokument (.doc või.docx)


Vaatamiseks klõpsake

Looge "mall" (word-fail) uute dokumentide (word-failide) genereerimiseks. Siin sisaldab "malli" tekst Exceli faili veergude nimesid, mis on ümbritsetud lokkis sulgudega: (A), (B) ja (C).

Programm genereerib uued dokumendid vastavalt "mallile", mis asendab kõik (A), (B) ja (C) vastavad lahtri väärtused Exceli failist: (A)- nimi, (B)- perekonnanimi, (C)- elukutse.

Samuti saate vahekaardil määrata oma raamimissümbolid Seaded programmid.

Valige failide ja kaustade teed


Valige failide ja kaustade teed (nupud märgistatud Valige). Programmis määrate järgmised teed:

Exceli fail andmetega (* .xls, * .xlsx)- see on teie exceli andmefaili (kliendiinfo) tee;

Wordi mallifail (* .doc, * .docx)- see on tee teie "malli" (eelmises etapis loodud sõnafaili) juurde;

Kaust uute sõnafailide salvestamiseks- see on tee kausta, kuhu programm salvestab uued loodud dokumendid.

Vaatamiseks klõpsake

Määrake soovitud andmete lehed ja read


Vaatamiseks klõpsake

Määrake oma Exceli faili lehtede ja ridade arv andmetega (kliendiinfo), mille jaoks soovite dokumente luua:

Exceli faili andmelehed- teie exceli faili lehtede numbrid, mis osalevad uute dokumentide moodustamisel;

Exceli faili andmeread- lehtede ridade numbrid (lehed, mis on määratud punktis Exceli faili andmelehed) oma exceli failist, mis osaleb uute dokumentide koostamisel. Iga määratud rea andmete põhjal luuakse eraldi dokument (word-fail).

Lehtede ja ridade nummerdamine programmis algab tähega 1 .