Biz PHP ishlab chiquvchilari o'zaro aloqada bo'lishi kerak bo'lgan dunyoda yashayapmiz operatsion tizim Windows. WMI (Windows boshqaruv interfeysi) Windows boshqaruvi) - bunday misollardan biri bilan o'zaro ta'sir qilish Microsoft Office.

Ushbu maqolada biz Word va PHP o'rtasidagi oddiy integratsiyani ko'rib chiqamiz: yaratish Microsoft hujjati PHP (va uning Interop kengaytmasi) yordamida HTML formasida so'z asosidagi kiritish maydonlari.

Tayyorgarlik bosqichlari

Avvalo, bizda asosiy WAMP muhiti sozlanganligiga ishonch hosil qilaylik. Interop faqat Windows-da mavjud bo'lganligi sababli, bizga kerak Apache server va PHP o'rnatilishi o'rnatildi Windows mashinasi. Ushbu imkoniyatda men EasyPHP 14.1 dan foydalanaman, uni o'rnatish va sozlash juda oson.

Keyingi narsa - Microsoft Office-ni o'rnatish. Versiya juda muhim emas. Men Microsoft Office 2013 Pro-dan foydalanayapman, lekin Office-ning 2007-dan eski har qanday versiyasi yaxshi bo'lishi kerak.

Shuningdek, bizda Interop ilovasini ishlab chiqish uchun kutubxonalar o'rnatilganligiga ishonch hosil qilishimiz kerak (PIA, Primary Interop Assemblies, Main Interop Assemblies). Windows Explorer-ni ochib, katalogga o'tish orqali bilib olishingiz mumkin \assembly va u erda biz o'rnatilgan yig'ilishlar to'plamini ko'rishimiz kerak:

Bu yerda siz Microsoft.Office.Interop.Word elementini ko'rishingiz mumkin (skrinshotda tagiga chizilgan). Bu biz demoda ishlatadigan qurilish bo'ladi. Iltimos, "Assembly nomi", "Versiya" va "Ochiq kalit tokeni" maydonlariga alohida e'tibor bering. Tez orada biz ularni PHP skriptimizda ishlatamiz.

Ushbu katalogda dasturlaringizda foydalanish mumkin bo'lgan boshqa yig'ilishlar (shu jumladan butun Office oilasi) mavjud (nafaqat PHP, balki VB.net, C# va boshqalar uchun ham).

Agar yig'ilishlar ro'yxati butun Microsoft.Office.Interop paketini o'z ichiga olmasa, biz PIA qo'shish orqali Office-ni qayta o'rnatishimiz yoki paketni Microsoft saytidan qo'lda yuklab olishimiz va uni o'rnatishimiz kerak. Ko'proq ma'lumot uchun batafsil ko'rsatmalar MSDN-dagi ushbu sahifaga qarang.

Izoh: Yuklab olish va o'rnatish uchun faqat PIA Microsoft Office 2010 tarqatilishi mavjud.

Nihoyat, php.ini da php_com_dotnet.dll kengaytmasini yoqishingiz va serverni qayta ishga tushirishingiz kerak.

Endi siz dasturlashga o'tishingiz mumkin.

HTML shakli

Ushbu misolning asosiy qismi server tomonida bo'lgani uchun biz quyidagi shaklga ega oddiy sahifani yaratamiz:

Bizda ism uchun matn maydoni, jins uchun radio tugmalar guruhi, yosh uchun slayder va xabarni kiritish uchun matn kiritish maydoni, shuningdek, mashhur "Yuborish" tugmasi mavjud.

Ushbu faylni virtual xostlar katalogida “index.html” sifatida saqlang, shunda unga http://test/test/interop kabi manzil orqali kirish mumkin.

Server qismi

Server tomonidagi ishlov beruvchi fayli suhbatimizning asosiy maqsadidir. Boshlash uchun men ushbu fayl uchun to'liq kodni taqdim etaman va keyin uni bosqichma-bosqich tushuntiraman.

ko'rinadigan = rost; $fn = __DIR__ . "\\ template.docx"; $d = $w->Hujjatlar->Ochiq($fn); echo "Hujjat ochiq.


"; $flds = $d->Maydonlar; $count = $flds->Count; echo "Hujjatda $count maydonlari mavjud.
"; aks-sado "
    "; $mapping = setupfields(); foreach ($flds as $index => $f) ( $f->Select(); $key = $mapping[$index]; $value = $inputs[$key]; agar ($kalit == "jins") ( agar ($value == "m") $value = "Janob."; else $value = "Xonim."; } if($key=="printdate") $value= date ("Y-m-d H:i:s"); $w->Selection->TypeText($value); echo "!}
  • Men $ indeks maydonini tayinlayman: $ kalit qiymati $ qiymat
  • "; ) aks-sado "
"; echo "Qayta ishlash tugallandi!

"; aks-sado "Men yozyapman, kuting...
"; $d->PrintOut(); uyqu(3); echo "Bajarildi!"; $w->Chiqish(false); $w=null; function setupfields() ( $mapping = array(); $mapping = "gender" $mapping = "ism"; $mapping = "chop etish sanasi";

Biz $inputs o'zgaruvchisini shakldan olingan qiymatlar bilan to'ldirganimizdan so'ng, shuningdek, printdate kaliti bilan bo'sh element yaratganimizdan so'ng (biz buni nima uchun qilganimizni keyinroq muhokama qilamiz), biz to'rtta muhim qatorga keldik:

$assembly = "Microsoft.Office.Interop.Word, Versiya=15.0.0.0, Madaniyat=neytral, PublicKeyToken=71e9bce111e9429c"; $sinf = "Microsoft.Office.Interop.Word.ApplicationClass"; $w = yangi DOTNET($assembly, $sinf); $w->ko'rinadigan = rost;

PHP-dagi MAQOMOTI manipulyatori "yig'ish" doirasida sinfning namunasini yaratishni talab qiladi. Bizning holatlarimizda biz Word bilan ishlaymiz. Agar siz birinchi skrinshotga qarasangiz, Word uchun to'liq montaj imzosini yozishingiz mumkin:

  • "Ism", "Versiya", "Ochiq kalit tokeni" - bularning barchasi "c:\Windows\assembly" da ko'rish mumkin bo'lgan ma'lumotlardan olingan.
  • "Madaniyat" har doim neytraldir

Biz murojaat qilmoqchi bo'lgan sinf har doim "montaj nomi" + " .ApplicationClass " deb ataladi.

Ushbu ikkita parametrni o'rnatish orqali biz Word bilan ishlash uchun ob'ektni olishimiz mumkin.

Ushbu ob'ekt fonda qolishi mumkin yoki ko'rinadigan atributni true ga o'rnatib, uni ish rejimiga o'tkazishimiz mumkin.

Keyingi qadam, qayta ishlashni talab qiladigan hujjatni ochish va $d o'zgaruvchisiga "hujjat" nusxasini yozishdir.

Shakl ma'lumotlari asosida hujjatda tarkib yaratish uchun siz bir nechta yo'nalishlarni olishingiz mumkin.

Eng yomoni, hujjat mazmunini PHP da qattiq kodlash va keyin uni Word hujjatiga chiqarishdir. Men buni quyidagi sabablarga ko'ra qilmaslikni qat'iy tavsiya qilaman:

  1. Siz moslashuvchanlikni yo'qotasiz. Chiqish faylidagi har qanday o'zgarishlar PHP kodini o'zgartirishni talab qiladi.
  2. Bu nazorat va ko'rinishni ajratishni buzadi
  3. Skriptdagi hujjat tarkibiga uslublarni qo‘llash (tegishlash, shriftlar, uslublar va h.k.) kod satrlari sonini sezilarli darajada oshiradi. Uslublarni dasturiy jihatdan o'zgartirish juda og'ir.

Yana bir variant qidiruv va almashtirishdan foydalanish bo'ladi. Buning uchun PHP-da yaxshi o'rnatilgan imkoniyatlar mavjud. Biz Word hujjatini yaratishimiz mumkin, unda biz yorliqlarni maxsus ajratgichlar bilan joylashtiramiz, ular keyinchalik almashtiriladi. Masalan, biz quyidagi parchani o'z ichiga olgan hujjat yaratishimiz mumkin:

va PHP yordamida biz uni formadan olingan “Nom” maydoni mazmuni bilan bemalol almashtira olamiz.

Bu oddiy va bizni birinchi usulda duch keladigan barcha noxush oqibatlardan qutqaradi. Biz faqat to'g'ri ajratuvchi haqida qaror qabul qilishimiz kerak, bu holda biz naqshdan foydalanamiz.

Men uchinchi usulni tavsiya qilaman va u Word dasturini chuqurroq bilishga tayanadi. Biz maydonlarni to'ldiruvchi sifatida ishlatamiz va PHP kodidan foydalanib, biz to'g'ridan-to'g'ri tegishli qiymatlar bilan maydonlardagi qiymatlarni yangilaymiz.

Ushbu yondashuv moslashuvchan, tezkor va Wordning eng yaxshi amaliyotlariga mos keladi. Shuningdek, u hujjatda to'liq matnli qidiruvdan qochishga yordam beradi, bu esa ishlash uchun yaxshi. E'tibor bering, ushbu yechimning kamchiliklari ham bor.

Word boshidan boshlab maydonlar uchun nomlangan indekslarni qo'llab-quvvatlamadi. Yaratilayotgan maydonlar uchun nomlarni belgilagan bo'lsak ham, biz bu maydonlarning raqamli identifikatorlaridan foydalanishimiz kerak. Bu shuningdek, nima uchun biz maydon indeksini formadagi maydon nomiga moslashtirish uchun alohida funksiyadan (sozlash maydonlari) foydalanishimiz kerakligini tushuntiradi.

Ushbu demo qo'llanmada biz 5 MERGEFIELD maydoniga ega hujjatdan foydalanamiz. Biz shablon hujjatini skript ishlov beruvchimiz bilan bir joyda joylashtiramiz.

Iltimos, e'tibor bering, chop etish sanasi maydonida shaklda tegishli maydon yo'q. Shuning uchun biz $inputs massiviga bo'sh chop etish sanasi elementini qo'shdik. Busiz, skript hali ham ishga tushadi va ishlaydi, lekin PHP chop etilgan sana indeksi $inputs massivida emasligi haqida ogohlantirish beradi.

Maydonlarni yangi qiymatlar bilan almashtirgandan so'ng, biz hujjatni foydalanib chop etamiz

$d->PrintOut();

PrintOut usuli bir nechta ixtiyoriy parametrlarni oladi va biz uning eng oddiy shaklidan foydalanamiz. Bu Windows mashinasiga biriktirilgan standart printerda hujjatning bir nusxasini chop etadi.

Bundan tashqari, chop etishdan oldin chiqishni ko'rish uchun PrintPreview qo'ng'iroq qilishingiz mumkin. To'liq avtomatik muhitda biz, albatta, PrintOut usulidan foydalanamiz.

Word ilovasini o'chirishdan oldin biroz kutishingiz kerak bo'lishi mumkin, shuning uchun chop etish ishini navbatga qo'yish uchun vaqt kerak bo'ladi. Kechiktirmasdan(3), $w->Quit usuli darhol bajariladi va ish navbatga qo'yilmaydi.

Va nihoyat, biz $w->Quit(false) ni chaqiramiz, bu bizning skriptimiz tomonidan chaqirilgan Word dasturini yopadi. Usulga o'tkaziladigan yagona parametr - chiqishdan oldin faylni saqlash bo'yicha ko'rsatma. Hujjatga o‘zgartirishlar kiritdik, lekin ularni saqlashni xohlamaymiz, chunki keyingi ish uchun toza shablon kerak.

Kod bilan ishlashni tugatganimizdan so'ng, biz forma sahifamizni yuklashimiz, ba'zi qiymatlarni to'ldirishimiz va uni yuborishimiz mumkin. Quyidagi rasmlar skriptning chiqishini, shuningdek yangilangan Word hujjatini ko'rsatadi:

Yaxshilangan ishlov berish tezligi va PIA haqida bir oz ko'proq

PHP zaif terilgan tildir. Ob'ekt tipidagi COM ob'ekti. Skript yozishda bizda ob'ektning tavsifini olishning iloji yo'q, xoh u Word dasturi, hujjat yoki maydon. Ushbu ob'ekt qanday xususiyatlarga ega ekanligini yoki u qanday usullarni qo'llab-quvvatlashini bilmaymiz.

Bu rivojlanish tezligini sezilarli darajada sekinlashtiradi. Rivojlanishni tezlashtirish uchun avval C# da funksiyalarni yozishni, keyin esa kodni PHP ga tarjima qilishni tavsiya qilaman. Men C# ishlab chiqish uchun “#develop” deb nomlangan bepul IDE ni tavsiya qilishim mumkin. Siz topishingiz mumkin. Men uni Visual Studio'dan afzal ko'raman, chunki #develop kichikroq, sodda va tezroq.

C# kodini PHP ga ko'chirish ko'rinadigan darajada qo'rqinchli emas. Sizga C# da bir nechta qatorlarni ko'rsataman:

Word.Application w=yangi Word.Application(); w.Visible=true; String path=Application.StartupPath+"\\template.docx"; Word.Document d=w.Documents.Open(yo'l) sifatida 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("..."); )

Siz C# kodi men ilgari ko'rsatgan PHP kodiga juda o'xshashligini sezasiz. C# - kuchli terilgan til, shuning uchun siz ushbu misolda bir nechta translatsiya operatorlari mavjudligini va o'zgaruvchilarni kiritish kerakligini ko'rasiz.

O'zgaruvchining turini ko'rsatib, siz toza kod va avtoto'ldirishdan bahramand bo'lishingiz mumkin va rivojlanish tezligi sezilarli darajada oshadi.

PHP rivojlanishini tezlashtirishning yana bir yo'li Wordda makrosni chaqirishdir. Biz bir xil harakatlar ketma-ketligini bajaramiz va keyin uni makro sifatida saqlaymiz. Makros Visual Basic-da yozilgan bo'lib, uni PHP ga tarjima qilish ham oson.

Va, eng muhimi, Microsoft Office PIA hujjatlari, ayniqsa har bir Office ilovasi uchun nomlar maydoni hujjatlari mavjud bo'lgan eng batafsil ma'lumotnoma materialidir. Eng ko'p ishlatiladigan uchta dastur:

  • 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

Xulosa

Ushbu maqolada biz Word hujjatini PHP MAQOMOTI kutubxonalari va Microsoft Office o'zaro ishlash imkoniyatlaridan foydalangan holda ma'lumotlar bilan qanday to'ldirishni ko'rsatdik.

Windows va Office dasturlari kundalik hayotda keng qo'llaniladi. Office/Window va PHP imkoniyatlarini bilish har bir PHP va Windows dasturchisi uchun foydali bo'ladi.

PHP COM kengaytmasi ushbu kombinatsiyadan foydalanish uchun eshikni ochadi.

Biz avval boshlagan Wordda shakllar bilan ishlash mavzusini davom ettiramiz. Oldingi maqolalarda biz shakllarni faqat "ilg'or foydalanuvchi" nuqtai nazaridan ko'rib chiqdik, ya'ni. Biz qo'lda to'ldirish oson bo'lgan hujjatlarni yaratdik. Bugun men ushbu vazifani kengaytirish va hujjatlarni yaratish uchun Kontentni boshqarish mexanizmidan foydalanishni taklif qilmoqchiman.

To'g'ridan-to'g'ri vazifamizga o'tishdan oldin, Word hujjatlarida kontentni boshqarish uchun ma'lumotlar qanday saqlanishi haqida bir necha so'z aytmoqchiman (hozircha ular hujjat mazmuni bilan qanday bog'langanligini ataylab o'tkazib yuboraman, lekin men qaytishga umid qilaman. Bu haqda ba'zan keyingi maqolalarda).

Mantiqiy savol - bu nima? itemProps1.xml va shunga o'xshash komponentlar? Ushbu komponentlar ma'lumotlar manbalarining tavsiflarini saqlaydi. Katta ehtimol bilan, ishlab chiquvchilar rejalashtirganidek, hujjatga o'rnatilgan xml fayllariga qo'shimcha ravishda boshqalar ham ishlatilishi kerak edi, ammo hozirgacha faqat ushbu usul amalga oshirildi.

Nega ular biz uchun foydali? itemPropsX.xml? Ularning xml sxemalarini ro'yxatga olishlari (ularning targetNamespace), ota-onada ishlatiladi itemX.xml. Bu shuni anglatadiki, agar biz hujjatga bir nechta maxsus xml kiritgan bo'lsak, kerakli narsani topish uchun biz o'tishimiz kerak. itemPropsX.xml komponentlar va to'g'ri sxemani toping, va shuning uchun o'ng itemX.xml.

Endi yana bir narsa. Biz komponentlar o'rtasidagi ulanishlarni qo'lda tahlil qilmaymiz va faqat asosiy Packaging API-dan foydalanib o'zimizga keraklilarini qidiramiz! Buning o'rniga biz Open XML SDK dan foydalanamiz (uning tuzilmalari NuGet orqali mavjud). Albatta, biz ilgari ushbu API haqida bir og'iz so'z aytmadik, ammo bizning vazifamiz uchun undan minimal talab qilinadi va barcha kod juda shaffof bo'ladi.

Xo'sh, asosiy kirish tugadi, biz misol bilan boshlashimiz mumkin.

O'rnatilgan an'anaga ko'ra, biz maqolada chizilgan "Uchrashuv hisoboti" ni olamiz. Sizga eslatib o'taman, hujjat shabloni shunday ko'rinishga ega edi:

Va bu hujjat maydonlari bog'langan XML

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

1-qadam: Ma'lumotlar modelini yarating

Aslida, bizning vazifamiz shunchaki hujjat yaratish emas, balki ishlab chiquvchi va foydalanuvchi uchun qulay vosita yaratish (hech bo'lmaganda qoralama versiyada).

Shuning uchun biz modelni C# sinf tuzilishi ko'rinishida e'lon qilamiz:

Ommaviy sinf MeetingNotes ( ommaviy MeetingNotes() ( Ishtirokchilar = yangi roʻyxat (); Qarorlar = yangi ro'yxat (); ) umumiy satr Mavzu (olish; o'rnatish; ) umumiy DateTime Sana (olish; o'rnatish; ) umumiy qator Kotib (olish; o'rnatish; ) umumiy ro'yxat Ishtirokchilar (olish; belgilangan; ) umumiy roʻyxati Decisions ( get; set; ) ) public class Decision ( public string Problem ( get; set; ) public string Solution ( get; set; ) public string Responsible ( get; set; ) public DateTime ControlDate ( get; set; ) ) public sinf ishtirokchisi (ommaviy qator nomi (olish; oʻrnatish; ) )

Umuman olganda, XML serializatsiyasini boshqarish uchun atributlar qo'shilganidan tashqari hech qanday maxsus narsa yo'q (chunki modeldagi nomlar va kerakli XML biroz farq qiladi).

2-qadam: Yuqoridagi modelni XML-ga seriyalashtiring

Vazifa, printsipial jihatdan, ahamiyatsiz. "Bizning sevimli XmlSerializerimizni oling va davom eting" deb ataladigan narsa, agar bitta narsa bo'lmasa Lekin

Afsuski, ichida joriy versiya Ko'rinishidan, Officeda xatolik bor, bu quyidagicha: agar maxsus xmlda bo'lsa oldin asosiy nom maydonini (Word ko'rsatish uchun elementlarni olishi kerak bo'lgan joyni) e'lon qilish orqali boshqasini e'lon qiling, keyin takrorlanuvchi Kontentni boshqarish elementlari noto'g'ri ko'rsatila boshlaydi (faqat shablonning o'zida bo'lgani kabi ko'plab elementlar ko'rsatilgan - ya'ni takrorlanuvchi bo'lim). ishlamaydi ).

Bular. Bu ishlaydigan xml:

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

va bu ham:

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

lekin bu endi yo'q:

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

Men Connect-da Microsoft qo‘llab-quvvatlash xizmatiga xatolik yuborishga harakat qildim, lekin negadir Office xatolarini yuborishga ruxsatim yo‘q. MSDN forumidagi muhokama ham yordam bermadi.

Umuman olganda, kerakli vaqtinchalik yechim. Agar biz XML-ni qo'lda yaratganimizda, hech qanday muammo bo'lmasdi - biz hamma narsani o'zimiz qilgan bo'lardik. Biroq, bu holda, men standart XmlSerializer-dan foydalanmoqchiman, bu nomlar bo'shliqlari ishlatilmasa ham, sukut bo'yicha chiqish XML-ga bir nechta nomlar maydonini qo'shadi.

Biz XmlSerializer-da o'z nom maydonlarimiz chiqishini butunlay bostiramiz. To'g'ri, bu yondashuv faqat ularga kerak bo'lmasa ishlaydi (aks holda ular hali ham qo'shiladi va faqat biznikidan OLDIN).

Aslida, butun kod (agar o'zgaruvchi bo'lsa uchrashuv eslatmalari MeetingNotes turidagi ilgari to'ldirilgan ob'ektni o'z ichiga oladi):

var serializer = new XmlSerializer(typeof (MeetingNotes));
var serializedDataStream = new MemoryStream();

var namespaces = new XmlSerializerNamespaces();
nom bo'shliqlari.Qo'shish("" , "" );

serializer.Serialize(serializedDataStream, majlis eslatmalari, nomlar maydoni);
serializedDataStream.Seek(0, SeekOrigin.Begin);

Qadam 3. Olingan XML-ni Word hujjatiga kiriting.

Bu erda biz quyidagicha harakat qilamiz:

  • shablonni nusxalash va nusxasini ochish
  • unda kerakli maxsus xml ni toping (nomlar maydoni bo'yicha qidiring "urn: Uchrashuv eslatmalari")
  • komponent tarkibini bizning XML bilan almashtiring

File.Copy(shablon nomi, natija hujjat nomi, rost ); yordamida (var hujjat = WordprocessingDocument.Open(resultDocumentName, true )) ( var xmlpart = document.MainDocumentPart.CustomXmlParts .Single(xmlPart => xmlPart.CustomXmlPropertiesPart.DataStoreItem.SchemaReferences.Of). ().Har qanday(sr => sr.Uri.Value == "urn:MeetingNotes"!}

Biz hammamiz matnlar bilan u yoki bu tarzda ishlaymiz. Ba'zida biron bir vazifa uchun katta yoki unchalik katta bo'lmagan hajmdagi matnni yaratish kerak bo'ladi, masalan, formatlash bilan o'ynash, lekin qo'lda matn yo'q, siz uni o'zingiz yozishga dangasasiz. Nima qilish kerak? Javob oddiy: Word-ga o'rnatilgan tasodifiy matn generatoridan foydalaning!

Microsoft Word muharririda maxsus buyruqlar yordamida tez va oson matn yaratishingiz mumkin. Men Word 2007 dan gvineya cho'chqasi sifatida foydalanaman, bu buyruqlar Wordning barcha versiyalarida ishlashi kerak. Men sizga matn yaratishning uchta usuli haqida gapirib beraman.

1-usul: rand() dan foydalanish

Rand() funksiyasi mahalliylashtirilgan namunali matnni, 3 paragrafdan 3 ta jumlani kiritadi. Word-ni oching, kursorni matnlar to'plami paydo bo'ladigan joyga qo'ying va buyruqni kiriting:

va Enter tugmasini bosing. Rand funktsiyasining o'zi yo'qoladi va uning o'rnida 3 ta matn paydo bo'ladi:

Lekin bu hammasi emas. Agar sizga ko'p matn kerak bo'lsa, siz rand funktsiyasidan qo'shimcha argumentlar bilan foydalanishingiz mumkin, masalan:

=rand(x,y)

Qayerda" x"paragraflar sonini bildiradi va" y- har bir paragrafdagi jumlalar soni. Masalan, =rand(20,5) har birida beshta iboradan iborat 20 ta paragraf kiritiladi. A =rand(7) har biri 3 ta jumladan iborat 7 ta xatboshini kiritadi.

2-usul: lorem() dan foydalanish

Yaxshi eski Lorem Ipsumni namuna sifatida kiritish uchun lorem() funksiyasidan foydalaning. Quyidagi buyruqni kiriting va Enter tugmasini bosing:

Va biz bu pan-lotin matnini olamiz

lorem() funktsiyasi, shuningdek, rand() kabi qo'shimcha argumentlarni paragraflar va jumlalar soni ko'rinishida osongina qabul qiladi. Argumentlarsiz funktsiya sukut bo'yicha har biri uchta jumladan iborat 3 ta paragrafni qo'shadi.

3-usul. rand.old() funksiyasi

Foydalanish avvalgi buyruqlarga o'xshash:

=rand.old()

va Enter tugmasini bosing.

Rand.old() funksiyasi 2003-yilgacha bo'lgan eski ofis bilan mos kelishi uchun qoldirildi. Qo'llash usuli oldingi ikkitasi bilan bir xil, faqat matn bir xil iboralardan iborat bo'ladi: "Bu yumshoq frantsuz rulolaridan yana bir oz yeb, choy iching." Vaqti-vaqti bilan shriftlar bilan ishlagan har bir kishi bu iborani biladi.

Birinchi ikkita usulda bo'lgani kabi argumentlarni topshirishingiz mumkin.

Hammasi shu, matnlar yaratildi, endi siz ushbu yumshoq frantsuz rulolarini ko'proq yeyishingiz va choy ichishingiz mumkin :)

Yuqoridagi funksiyalar yordamida matnni joylashtira oldingizmi?

Bir marta, olimpiada natijalarini jamlagandan so'ng, ishtirokchilardan o'tgan (yoki muvaffaqiyatsiz) fanlar natijalari bilan xat jo'natishlari talab qilinganida, men bir qiz o'tirganini va imtihon natijalarini kiritish uchun qo'llarini ishlatayotganini payqadim. ism va boshqa ma'lumotlar xat shabloniga kiritiladi. Uning oldida ismlar va baholar bilan Exceldan chop etilgan bir nechta varaqlar yotardi. Copy-Paste, Ctrl+C - Ctrl+V, to'liq ismni nominativdan genitiv holatga tarjima qilish va shuning uchun ish uchta ma'lumot varag'ining birinchi yarmi bilan allaqachon bajarilgan. Sizningcha, u qancha vaqt o'tirib ma'lumotlarni nusxalash va natijani tekshirishi mumkin edi? O'ylaymanki, bu juda uzoq vaqt talab etadi va juda ko'p xatolar bo'lar edi. Ammo keyin u hali ham pochta konvertlariga imzo chekishi kerak edi ... Men uning vaqtiga achindim va bir necha daqiqada men bu jarayonni oddiy vositalar yordamida qanday avtomatlashtirish mumkinligini ko'rsatdim. Bir oz ekskursiyadan so'ng uning ishi 20 daqiqada yakunlandi.

Ushbu darsda men sizga minimal vaqt sarflab, qanday qilib tezda hujjatlarni (xatlar, taklifnomalar) yaratishingiz mumkinligini ko'rsataman. IN turli versiyalar Ushbu tasvirlangan jarayon turli tillarda turlicha nomlanadi. Shunday qilib, rus tilida bu "Birlashtirish", ingliz tilida esa "Birlashtirish".

Umid qilamanki, zanjir harflar kimdandir pensiya jamg'armasi, soliq bildirishnomalari xuddi shu tarzda yaratilgan :)

Asboblar

Hujjatlarni yaratish uchun bizga OpenOffice Writer kerak. Unda biz xat shablonini yaratamiz. Bundan tashqari, sizga OpenOffice Calc kerak bo'ladi. Unda biz, masalan, ziyofatga taklif qilmoqchi bo'lgan odamlarning ismlari va manzillari bilan ma'lumotlar bazasini yaratamiz. OpenOffice paketidagi dasturlar o'rniga MS Word va Exceldan osongina foydalanish mumkin. Ma'lumotlar bazasi MS Access-da osongina saqlanishi mumkin. Shunday qilib, keling, boshlaylik.

Ma'lumotlar bazasini yaratish

Ma'lumotlar bazasi MS Excel yoki OpenOffice Calc-dagi jadvaldan boshqa narsa emas, unda ma'lumotlar ustunlar shaklida joylashtirilgan va ustunlarni nomlash uchun birinchi qatordan foydalaniladi. Keling, masalan, "to'liq ism", "shahar", "indeks", "manzil" ustunlarini yarataylik. Ma'lumotlarni kiriting va faylni diskka saqlang.



Outlook manzillar kitobi yoki MS Access ma'lumotlar bazasi kabi boshqa manbalar ham ma'lumotlar bazasi sifatida ishlatilishi mumkin.

Xat shablonini yaratish

Harf shablonini yaratish biroz murakkabroq. Jadvaldagi ma'lumotlar (bizning ma'lumotlar bazamiz) shablonga xuddi shunday kiritilishi sababli, xat shunga mos ravishda yozilishi kerak. Agar sizning to'liq ismingiz ma'lumotlar bazasida nominativ holatda bo'lsa, "Azizlar," manzilida ushbu maydondan foydalana olmaysiz.<ФИО>” va konvert uchun “Kimga:<ФИО>" Ikkinchi holda, to'liq ism biroz noqulay ko'rinadi.

Xat shablonini tuzayotganda, men kimgadir xat yozishdan boshlashni maslahat beraman haqiqiy odamga. Siz buni o'zingiz qilishingiz mumkin. Keyin unda ma'lumotlar bazasidan oladigan ma'lumotlarni ajratib ko'rsating va uni tegishli maydonlar bilan almashtiring. Maydondagi tanlangan matnni almashtirishdan oldin ma'lumotlar bazasidagi maydon qaysi harf bilan boshlanishi kerakligiga e'tibor berishni tavsiya qilaman (kichik yoki katta harf). Albatta, siz shablonni maydonlar bilan darhol yaratishingiz mumkin, ammo keyin siz ba'zi xatolarni sezmasligingiz mumkin, masalan, holatlardagi nomuvofiqliklar.



Allaqachon berilgan shablonda bizga genitiv holatda to'liq ism va faqat ism va ota ismlarini o'z ichiga olgan maydon kerak bo'lishi aniq. Birinchi maydon bilan biz "Kimga" ni "Qabul qiluvchi" bilan almashtira olamiz va keyin nominativ holatda to'liq ism bizga juda mos keladi. Ikkinchi maydon bilan hamma narsa biroz murakkabroq va biz ma'lumotlar bazasida boshqa ustunni yaratishimiz va uni tegishli ma'lumotlar bilan to'ldirishimiz kerak. Keyingi darslardan birida men buni avtomatik ravishda qanday qilishni aytaman, ammo hozircha bizda bunday maydon bor deb taxmin qilamiz.

Maydonni kiritish va shablonni ma'lumotlar bazasiga ulash uchun siz quyidagi harakatlar ketma-ketligini bajarishingiz kerak. OpenOffice Writer-da ma'lumotlar bazasini tanlang



va "Aniqlash" tugmasini bosing.



Keyin ulangan ma'lumotlar bazasidan kerakli joyga maydonni kiriting. Buni amalga oshirish uchun Ctrl + F2 tugmalarini bosing yoki "Qo'shish" menyusida "Maydonlar" va "Boshqa" ni tanlang. Ochilgan oynada "Ma'lumotlar bazalari" yorlig'ini tanlang, maydon turida "Xatlarni birlashtirish maydonlari" ni tanlang, ma'lumotlar bazasidan tegishli maydonni tanlang va "Qo'shish" tugmasini bosing. Ushbu oynada haqiqiy ma'lumotlar bazasini ham tanlash mumkin.



Bitta maydon kiritilgandan so'ng, joriy oynani yopmasdan, uni keyingi maydon bilan almashtirish uchun matnni tanlashingiz mumkin, maydonni tanlang va yana "Qo'shish" tugmasini bosing. Va shunga o'xshash har bir maydon uchun.

MS Word uchun vaziyat biroz o'xshash va, ehtimol, qulayroqdir. MS Excel-da jadval yaratgandan so'ng, MS Word dasturini ishga tushiring va "Taqsimotlar" yorlig'iga o'ting. Ushbu yorliqda siz uchta zarur qadamni ko'rishingiz mumkin: "Birlashtirishni boshlash", "Hujjatni loyihalash va maydonlarni qo'shish" va "To'liq". "Natijani ko'rish" oraliq bosqichi ham mavjud, ammo bu ixtiyoriy.

Va shuning uchun ish hujjatni tanlash bilan boshlanadi. Bu harflar, stikerlar yoki oddiy Word hujjati bo'lishi mumkin. Siz zudlik bilan birlashtirish ustasini ishga tushirishingiz mumkin, u sizni jarayonning barcha bosqichlarida boshqaradi. Keyingi qadam qabul qiluvchini, ya'ni ma'lumotlar bazasini tanlashdir. Bu erda siz tayyor ma'lumotlar bazasini tanlashingiz mumkin (masalan, oldingi bosqichda yaratilgan MS Excel jadvali) yoki yangi ro'yxat yaratishingiz mumkin. Ro'yxat tanlangandan so'ng, "Birlashtirish maydonini qo'shish", "Qabul qiluvchilar ro'yxatini o'zgartirish" va hokazo tugmalar faollashadi, tegishli tugma bilan ochiladigan "Qabul qiluvchilar ro'yxatini o'zgartirish" dialog oynasi orqali siz butun ro'yxatdan tanlashingiz mumkin. faqat birlashtirish uchun zarur bo'lgan yozuvlar.







Maydonlarni qo'shganda, men "Birlashtirish maydonlarini ajratib ko'rsatish" tugmasini bosish orqali barcha maydonlarni kulrang rangda ajratib ko'rsatishni qulay deb bilaman. Aks holda, bunday maydonlar ko'p bo'lsa, ular matnda yo'qolishi mumkin.

Shunday qilib, shablon tayyor.

Harflarni yaratish

Oxirgi bosqich - harflarni yaratish. Buning uchun OpenOffice-da, "Asboblar" menyusida "Mail Merge Wizard..." -ni tanlang va shablonimizni ma'lumotlar bazasi bilan birlashtirish uchun barcha tavsiya etilgan bosqichlarni bajaring.





Muloqot oynasida biz taklif qilingan 8 ta nuqtadan ba'zi fikrlarni bajarishimiz shart emasligini ko'ramiz. Shunday qilib, biz allaqachon hujjatni yaratdik va biz uni tahrirlashimiz shart emas, biz allaqachon manzil blokini joylashtirdik. Ammo keling, narsalarni tartibda olaylik.

Birinchidan, joriy hujjat asosida harflar yaratayotganimizni tanlang va oynaning pastki qismidagi "Keyingi" tugmasini bosing. Ikkinchi nuqta - bizda bu qog'oz xat yoki elektron pochta bo'ladimi, tanlash. Xat faylga saqlanishi uchun siz birinchisini tanlashingiz kerak. “Keyingi” tugmasini bosing. Uchinchi nuqta bizdan manzil blokini yaratishni so'raydi, lekin biz uni qo'lda yaratganimiz uchun biz barcha katakchalarni olib tashlaymiz va keyingi bosqichga o'tamiz. Bu erda bizdan so'rov kiritish so'raladi, lekin bizda allaqachon mavjud, shuning uchun biz "Keyingi" ni bosing. Oltinchi nuqta - hujjatni tahrirlash, ma'lumotlar bazasidan kiritilgan maydonlar bilan hujjatni ko'rish va agar kerak bo'lsa, ba'zi maydonlarni chiqarib tashlash.



7-qadam shablonni ma'lumotlar bazasiga ulash natijasida yaratilgan har bir faylni tahrirlashni so'raydi. Va nihoyat, oxirgi, 8-bosqichda siz olingan hujjatlar bilan nima qilishni tanlashingiz mumkin. Siz saqlashingiz, chop etishingiz yoki elektron pochta orqali yuborishingiz mumkin. Bunday holda, siz barcha hujjatlarni bitta faylda yoki har bir hujjatni alohida saqlashingiz mumkin.

MS Word da birlashtirish jarayoni Topish va Birlashtirish tugmasini bosish bilan tugaydi.



Ochiladigan menyudan ko'rinib turibdiki, barcha harflarni chop etish va elektron pochta orqali yuborish mumkin, ammo ularning barchasini faylga saqlash mumkinligi aniq emas. Saqlash uchun siz birinchi elementni tanlashingiz kerak - "Alohida hujjatlarni o'zgartirish". Bu yangi hujjatni ochadi, unda har bir yangi harf yangi sahifada joylashadi va bu erda ushbu faylni saqlash mumkin.

Xulosa

Shunday qilib, ushbu darsda siz shablonga asoslangan hujjatlarni yaratish uchun birlashtirish vositasidan qanday foydalanishni o'rgandingiz. Keling, harakatlar ketma-ketligini qisqacha yozamiz:

  1. Jadval protsessorida ma'lumotlar bazasini yaratish kerak, undan ma'lumotlar maydonlarni to'ldirish uchun olinadi.
  2. Siz xat shablonini yaratishingiz kerak.
  3. Birlashtirishni bajaring va natijani saqlang.

A, ustundagi familiyalar B va ustundagi kasblar C.

2. Word hujjatini yarating (.doc yoki .docx)


(A), (B) Va (C).

(A), (B) Va (C) (A)- ism, (B)- familiya, (C)- kasb.

Sozlamalar dasturlar.

3. Fayl va papkalar uchun yo'llarni tanlang


Tanlang

4. Kerakli ma'lumotlarning varaqlari va qatorlarini belgilang


Excel fayl ma'lumotlar jadvallari

Excel fayl ma'lumotlar qatorlari Excel fayl ma'lumotlar jadvallari

1 .

Agar siz Excel faylingizning barcha varaqlari va/yoki qatorlari hujjatni shakllantirishda ishtirok etishini istasangiz, o'ng tarafdagi yozuv bilan tegishli tugmani bosing. Raqamlar(uning yozuvi quyidagicha o'zgaradi Hammasi).

5. Yangi so'z fayllarini nomlash uchun shablonni o'rnating


Yangi so'z fayllari uchun nomlash naqshini o'rnating:

Yangi so'z fayllari nomlari shablonlari- bu dastur tomonidan yaratilgan yangi hujjatlar (so'z fayllari) nomlari uchun shablon. Bu erda nom naqshida jingalak qavslar bilan o'ralgan Excel faylining ustun nomlari mavjud: (A) Va (B). Yangi hujjat yaratishda dastur hamma narsani almashtiradi (A) Va (B) excel faylidan tegishli katak qiymatlari - bu yangi hujjatning nomi (word fayli) bo'ladi.

Yorliqda ramka belgilarini o'rnatishingiz mumkin Sozlamalar dasturlar.

6. "Yaratish" tugmasini bosing


Tugmani bosing Yaratish va taraqqiyot ekranda paydo bo'ladi. Shakllanishda qatnashgan excel faylidagi qatorlar soni qancha bo'lsa, shuncha hujjatlar (word fayllari) yaratiladi.

7. Hamma narsa


Barcha hujjatlar (word fayllari) yaratilgan va ko'rsatilgan papkada joylashgan Yangi so'z fayllarini saqlash uchun papka. Hammasi :)

Exwog- shablon yordamida Exceldan Word-ga hisobot ishlab chiqaruvchisi

Excel fayl ma'lumotlariga asoslangan shablon (Word fayli) yordamida bepul Word fayl generatori

Mac OS, Windows va Linuxda ishlaydi

Yangi yaratilgan so'z fayllari nomlarini belgilash imkonini beradi

Kerakli ma'lumotlarning varaqlari va qatorlarini belgilash imkonini beradi

Excel ustunlari nomlari uchun atrofdagi belgilarni belgilash imkonini beradi

Foydalanish oson

Ma'lumotlaringizni Excel formatida (.xls va .xlsx) saqlang va bir necha marta bosish orqali Word fayllarini (.doc va .docx) yarating :)


U qanday ishlaydi?

Excel faylingizni ko'rib chiqing


Ushbu misolda Excel faylida mijozlar haqida ma'lumotlar mavjud. Har bir qator ma'lum bir mijozga mos keladi. Ismlar ustun shaklida joylashtirilgan A, ustundagi familiyalar B va ustundagi kasblar C.

Ko'rish uchun bosing

Word hujjatini yarating (.doc yoki .docx)


Ko'rish uchun bosing

Yangi hujjatlar (so'z fayllari) yaratish uchun "shablon" (so'z fayli) yarating. Bu erda "shablon" matni jingalak qavslar bilan o'ralgan Excel fayli ustunlarining nomlarini o'z ichiga oladi: (A), (B) Va (C).

Dastur barcha o'rnini bosadigan "shablon" bo'yicha yangi hujjatlarni yaratadi (A), (B) Va (C) excel faylidan tegishli katak qiymatlari: (A)- ism, (B)- familiya, (C)- kasb.

Bundan tashqari, yorliqda ramka belgilarini o'rnatishingiz mumkin Sozlamalar dasturlar.

Fayl va papkalar uchun yo'llarni tanlang


Fayllar va papkalar uchun yo'llarni tanlang (yorliqli tugmalar Tanlang). Dasturda siz quyidagi yo'llarni belgilaysiz:

Ma'lumotlarga ega Excel fayli (*.xls, *.xlsx)- bu ma'lumotlar (mijoz ma'lumotlari) bilan Excel faylingizga yo'l;

Word shablon fayli (*.doc, *.docx)- bu sizning "shabloningiz" ga yo'l (oldingi bosqichda yaratilgan so'z fayli);

Yangi so'z fayllarini saqlash uchun papka- bu dastur yangi yaratilgan hujjatlarni saqlaydigan papkaga yo'l.

Ko'rish uchun bosing

Kerakli ma'lumotlarning varaqlari va qatorlarini belgilang


Ko'rish uchun bosing

Hujjatlarni yaratmoqchi bo'lgan ma'lumotlar (mijoz ma'lumotlari) bilan Excel faylingizning varaqlari va qatorlari sonini belgilang:

Excel fayl ma'lumotlar jadvallari- yangi hujjatlarni shakllantirishda ishtirok etadigan excel faylingiz varaqlari soni;

Excel fayl ma'lumotlar qatorlari- varaqlarning qator raqamlari (varaqlarda ko'rsatilgan Excel fayl ma'lumotlar jadvallari) yangi hujjatlarni yaratishda ishtirok etadigan excel faylingiz. Har bir ko'rsatilgan qator ma'lumotlari asosida alohida hujjat (word fayli) yaratiladi.

Dasturda varaqlar va satrlarni raqamlash bilan boshlanadi 1 .