نحوه تولید اسناد در word تولید برنامه ای اسناد فرم در Word. یک الگوی سند Word ایجاد کنید

ما در دنیایی زندگی می کنیم که توسعه دهندگان PHP باید هر از گاهی با سیستم عامل تعامل داشته باشند. سیستم ویندوز. WMI (رابط مدیریت ویندوز) کنترل های ویندوز) - یکی از این نمونه ها تعامل با مایکروسافت آفیس.

در این مقاله به یک ادغام ساده بین Word و PHP: Generation خواهیم پرداخت سند مایکروسافتفیلدهای ورودی مبتنی بر کلمه در فرم HTML با استفاده از PHP (و پسوند Interop آن).

مراحل مقدماتی

اول از همه، بیایید مطمئن شویم که یک محیط اولیه WAMP را راه اندازی کرده ایم. از آنجایی که Interop فقط در ویندوز وجود دارد، ما نیاز داریم که سرور آپاچی و نصب پی اچ پی ما روی یک ماشین ویندوز مستقر شود. به این ترتیب، من از EasyPHP 14.1 استفاده می کنم که نصب و راه اندازی آن بسیار آسان است.

مرحله بعدی نصب مایکروسافت آفیس است. نسخه خیلی مهم نیست. من از مایکروسافت آفیس 2013 پرو استفاده می کنم اما از هر کدام نسخه آفیسقدیمی تر از 2007 باید کار کند.

ما همچنین باید مطمئن شویم که کتابخانه هایی را برای توسعه برنامه Interop (PIA، Primary Interop Assemblies، Primary Interop Assemblies) نصب کرده ایم. با باز کردن می توانید متوجه شوید Windows Explorer، و رفتن به دایرکتوری \assembly، و در آنجا باید مجموعه ای از اسمبلی های نصب شده را ببینیم:

در اینجا می توانید عنصر Microsoft.Office.Interop.Word را ببینید (که در تصویر زیر خط کشیده شده است). این ساختی است که ما در نسخه نمایشی خود از آن استفاده خواهیم کرد. لطفا توجه کنید توجه ویژهدر فیلدهای «نام مونتاژ (نام مجمع)»، «نسخه (نسخه)» و «ژتون کلید عمومی (ژتون کلید عمومی)». ما به زودی از آنها در اسکریپت PHP خود استفاده خواهیم کرد.

این دایرکتوری همچنین شامل مجموعه‌های دیگری (از جمله کل خانواده آفیس) است که برای استفاده در برنامه‌های آنها (نه تنها برای PHP، بلکه برای VB.net، C# و غیره) در دسترس هستند.

اگر لیست اسمبلی شامل کل بسته Microsoft.Office.Interop نیست، باید آفیس را با افزودن PIA مجدداً نصب کنیم یا به صورت دستی بسته را از سایت مایکروسافت دانلود و نصب کنیم. برای بیشتر دستورالعمل های دقیقبه این صفحه در MSDN مراجعه کنید.

اظهار نظرتوجه: فقط توزیع مایکروسافت آفیس 2010 PIA برای دانلود و نصب در دسترس است، نسخه اسمبلی در این بسته 14.0.0 است و نسخه 15 فقط با آفیس 2013 ارائه می شود.

در نهایت باید پسوند php_com_dotnet.dll را در php.ini فعال کنید و سرور را ریستارت کنید.

حالا می توانیم به سراغ برنامه نویسی برویم.

فرم HTML

از آنجایی که قسمت اصلی این مثالدر سمت سرور قرار دارد، ما یک صفحه ساده با فرمی ایجاد خواهیم کرد که به شکل زیر است:

ما یک فیلد متنی برای نام، یک گروه از دکمه‌های رادیویی برای جنسیت، یک نوار لغزنده برای سن، و یک ناحیه ورودی متن برای وارد کردن یک پیام، و همچنین دکمه بدنام «ارسال» داریم.

این فایل را به عنوان "index.html" در فهرست ذخیره کنید میزبان مجازیبه طوری که می توان از طریق URL مانند http://test/test/interop به آن دسترسی پیدا کرد.

بخش سرور

فایل کنترل کننده در سمت سرور هدف اصلی مکالمه ما است. برای شروع، من می دهم کد کاملاین فایل و سپس مرحله به مرحله آن را توضیح خواهم داد.

قابل مشاهده = واقعی $fn = __DIR__ . "\\template.docx"؛ $d = $w->Documents->Open($fn); echo "سند باز است.


"; $flds = $d->Fields; $count = $flds->Count; echo "سند دارای فیلدهای $count است.
"؛ پژواک"
    "; $mapping = setupfields(); foreach ($flds as $index => $f) ($f->Select(؛ $key = $mapping[$index]; $value = $inputs[$key]; if ($key == "جنسیت") ( if ($value == "(!LANG:m") $value = "آقای."; else $value = "خانم."; } if($key=="printdate") $value= date ("Y-m-d H:i:s"); $w->Selection->TypeText($value); echo "!}
  • اختصاص $index: $key به $value
  • ";) اکو"
"; echo "پردازش کامل شد!

"؛ echo "چاپ، لطفا صبر کنید...
"; $d->PrintOut(); sleep(3); echo "Done!"; $w->Quit(false); $w=null; function setupfields() ($mapping = array(); $mapping = "جنسیت"؛ $mapping = "نام"؛ $mapping = "سن"؛ $mapping = "msg"؛ $mapping = "printdate"؛ بازگشت $mapping؛ )

پس از اینکه مقادیر دریافت شده از فرم را در متغیر $inputs نوشتیم و همچنین یک عنصر خالی با کلید printdate ایجاد کردیم (چرا این کار را انجام دادیم - بعداً در مورد آن صحبت خواهیم کرد)، به چهار خط بسیار مهم می رویم:

$assembly = "Microsoft.Office.Interop.Word، نسخه=15.0.0.0، فرهنگ=خنثی، PublicKeyToken=71e9bce111e9429c"; $class = "Microsoft.Office.Interop.Word.ApplicationClass"; $w = DOTNET جدید ($assembly، $class); $w->visible = true;

دستکاری کننده COM PHP نیاز به نمونه سازی کلاس در " اسمبلی " دارد. در مورد ما، ما با Word کار می کنیم. اگر به اسکرین شات اول نگاه کنید، می توانید امضای اسمبلی کامل را برای Word یادداشت کنید:

  • «Name»، «Version»، «Public Key Token» همگی از اطلاعاتی گرفته شده‌اند که می‌توانند در «c:\Windows\assembly» مشاهده شوند.
  • "فرهنگ" همیشه خنثی است

کلاسی که می خواهیم به آن اشاره کنیم همیشه اسم اسمبلی + .ApplicationClass نام دارد.

با تنظیم این دو پارامتر می توانیم یک شی را برای کار با Word بدست آوریم.

این شی می‌تواند در پس‌زمینه باقی بماند، یا می‌توانیم آن را با تنظیم مشخصه قابل مشاهده روی true وارد کنیم.

مرحله بعدی باز کردن سندی است که باید پردازش شود و نمونه‌ای از "سند" را در متغیر $d بنویسید.

راه های مختلفی برای ایجاد محتوای مبتنی بر فرم در یک سند وجود دارد.

بدترین کاری که باید انجام دهید این است که محتوای سند را در PHP کدنویسی کنید و سپس آن را در یک سند Word خارج کنید. اکیداً توصیه می کنم به دلایل زیر این کار را نکنید:

  1. انعطاف پذیری خود را از دست می دهید. هر گونه تغییر در فایل خروجی نیاز به تغییر در کد PHP دارد.
  2. این جدایی کنترل و دید را می شکند
  3. اعمال سبک ها در محتوای سند (تراز، فونت ها، استایل ها و غیره) در یک اسکریپت تعداد خطوط کد را تا حد زیادی افزایش می دهد. تغییر سبک‌ها از نظر برنامه‌ریزی بسیار دشوار است.

یکی دیگر از گزینه ها استفاده از Find and جایگزین است. PHP ابزارهای داخلی خوبی برای این کار دارد. می‌توانیم یک سند Word ایجاد کنیم که در آن برچسب‌هایی با جداکننده‌های ویژه قرار می‌دهیم که بعداً جایگزین می‌شوند. به عنوان مثال، می توانیم سندی ایجاد کنیم که حاوی قطعه زیر باشد:

و به کمک PHP می توانیم به راحتی آن را با محتویات فیلد “Name” دریافتی از فرم جایگزین کنیم.

این ساده است و ما را از تمام عواقب ناخوشایندی که در روش اول با آن مواجه می شویم نجات می دهد. ما فقط باید در مورد جداکننده صحیح تصمیم بگیریم، در این صورت در نهایت از یک الگو استفاده می کنیم.

من روش سوم را توصیه می کنم و مبتنی بر دانش عمیق ورد است. ما از فیلدها به عنوان مکان‌نما استفاده می‌کنیم و با استفاده از کد PHP، مقادیر موجود در فیلدها را مستقیماً با مقادیر مربوطه به‌روزرسانی می‌کنیم.

این رویکرد منعطف، سریع و سازگار با بهترین شیوه های Word است. با استفاده از آن می توانید از جستجوی تمام متن در سند نیز جلوگیری کنید که تأثیر خوبی بر عملکرد دارد. توجه داشته باشید که این راه حل دارای معایبی نیز می باشد.

Word از همان ابتدا از فهرست های نامگذاری شده برای فیلدها پشتیبانی نمی کرد. حتی اگر نام هایی برای فیلدهای ایجاد شده مشخص کرده باشیم، باز هم باید از شناسه های عددی این فیلدها استفاده کنیم. این همچنین توضیح می دهد که چرا ما باید از یک تابع جداگانه (setupfields) استفاده کنیم تا نمایه فیلد و نام فیلد را از فرم مطابقت دهیم.

در این دمو از سندی با 5 فیلد MERGEFIELD استفاده خواهیم کرد. ما سند الگو را در همان مکانی قرار می دهیم که کنترل کننده اسکریپت است.

لطفاً توجه داشته باشید که فیلد تاریخ چاپ فیلد مربوطه در فرم ندارد. به همین دلیل است که ما یک عنصر printdate خالی به آرایه $inputs اضافه کردیم. بدون این، اسکریپت همچنان اجرا و اجرا می شود، اما PHP هشداری مبنی بر عدم وجود فهرست تاریخ چاپ در آرایه $inputs صادر می کند.

پس از جایگزینی فیلدها با مقادیر جدید، سند را با آن چاپ می کنیم

$d->PrintOut();

روش PrintOut چند پارامتر اختیاری دارد و ما از ساده ترین شکل آن استفاده می کنیم. با این کار یک کپی از سند روی چاپگر پیش فرض متصل به دستگاه ویندوز چاپ می شود.

همچنین می توانید با PrintPreview تماس بگیرید تا نتیجه را قبل از چاپ ببینید. در یک محیط کاملا اتوماتیک، ما البته از روش PrintOut استفاده خواهیم کرد.

قبل از خروج از برنامه Word باید مدتی صبر کنید، زیرا طول می کشد تا کار چاپ در صف قرار گیرد. بدون تاخیر(3)، متد $w->Quit بلافاصله اجرا می‌شود و کار در صف قرار نمی‌گیرد.

در نهایت، $w->Quit(false) را فراخوانی می کنیم، که برنامه Word را که توسط اسکریپت ما فراخوانی شده بود، می بندد. تنها پارامتری که به متد داده می شود ذخیره فایل قبل از خروج است. ما ویرایش‌هایی در سند انجام داده‌ایم، اما نمی‌خواهیم آنها را ذخیره کنیم، زیرا برای کارهای بعدی به یک الگوی تمیز نیاز داریم.

پس از اتمام کد، می‌توانیم صفحه فرم خود را بارگذاری کنیم، مقادیری را پر کرده و آن را ارسال کنیم. تصاویر زیر خروجی اسکریپت و همچنین سند Word به روز شده را نشان می دهد:

سرعت پردازش بهبود یافته و کمی بیشتر در مورد PIA

پی اچ پی زبانی است که تایپ شده است. یک شی COM از نوع Object. در حین نوشتن اسکریپت، هیچ راهی برای دریافت توضیحات شیء نداریم، خواه یک برنامه Word، یک سند یا یک فیلد. ما نمی دانیم این شی چه ویژگی هایی دارد یا از چه روش هایی پشتیبانی می کند.

این امر سرعت توسعه را تا حد زیادی کاهش می دهد. برای سرعت بخشیدن به توسعه، توصیه می کنم ابتدا توابع را در سی شارپ بنویسید و سپس کد را به PHP ترجمه کنید. من می توانم یک IDE رایگان برای توسعه سی شارپ به نام "#develop" توصیه کنم. می توانید او را پیدا کنید. من آن را به ویژوال استودیو ترجیح می دهم زیرا #develop کوچکتر، آسان تر و سریعتر است.

انتقال کد سی شارپ به PHP آنقدرها هم که به نظر می رسد ترسناک نیست. بگذارید چند خط را در سی شارپ به شما نشان دهم:

Word.Application w=new Word.Application(); w.Visible=true; String path=Application.StartupPath+"\\template.docx"; Word.Document d=w.Documents.Open(path) as Word.Document; Word.Fields flds=d.Fields; intlen=flds.Count; foreach (Word.Field f در flds) (f.Select(); int i=f.Index; w.Selection.TypeText("...")؛ )

می بینید که کد سی شارپ بسیار شبیه به کد PHP است که قبلا نشان دادم. سی شارپ یک زبان قوی تایپ شده است، بنابراین در این مثال می توانید چندین عملگر Cast را ببینید و همچنین باید یک نوع برای متغیرها مشخص کنید.

با مشخص کردن نوع متغیر می توانید از کد واضح تر و تکمیل خودکار لذت ببرید و سرعت توسعه بسیار افزایش می یابد.

راه دیگر برای سرعت بخشیدن به توسعه PHP فراخوانی یک ماکرو در Word است. ما همان توالی اقدامات را انجام می دهیم و سپس آن را به عنوان یک ماکرو ذخیره می کنیم. ماکرو با ویژوال بیسیک نوشته شده است که ترجمه آن به PHP نیز آسان است.

و مهمتر از همه، مستندات Office PIA مایکروسافت، به ویژه اسناد فضای نام هر برنامه آفیس، دقیق ترین مرجع است. سه برنامه پرکاربرد عبارتند از:

  • 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
  • پاورپوینت 2013: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.powerpoint(v=office.15).aspx

نتیجه

در این مقاله به شما نشان دادیم که چگونه یک سند Word را با داده ها با استفاده از کتابخانه های PHP COM و قابلیت همکاری مایکروسافت آفیس پر کنید.

ویندوز و آفیس به طور گسترده در زندگی روزمره استفاده می شوند. دانستن قدرت Office/Window و PHP برای هر توسعه دهنده PHP و ویندوز مفید خواهد بود.

پسوند PHP COM در را به روی شما باز می کند تا از این ترکیب استفاده کنید.

همه ما به هر نحوی با متون سروکار داریم. گاهی اوقات نیاز به تولید یک متن بزرگ یا نه خیلی زیاد برای برخی کارها وجود دارد، به عنوان مثال، برای بازی کردن با قالب بندی، اما هیچ متنی در دسترس نیست، نوشتن آن خیلی تنبل است. چه باید کرد؟ پاسخ ساده است: از تولید کننده متن تصادفی داخلی در Word استفاده کنید!

در ویرایشگر مایکروسافت وردبا استفاده از دستورات خاص می توانید متن را به سرعت و به راحتی تولید کنید. من از Word 2007 به عنوان خوکچه هندی استفاده خواهم کرد این دستورات باید در تمام نسخه های Word کار کنند. من در مورد سه روش برای تولید متن به شما می گویم.

روش 1: استفاده از rand()

تابع rand() یک نمونه متن محلی، 3 پاراگراف از 3 جمله را وارد می کند. Word خود را باز کنید، مکان نما را در جایی قرار دهید که متن به زودی ظاهر می شود و دستور را وارد کنید:

و Enter را فشار دهید. خود تابع rand ناپدید می شود و به جای آن 3 پاراگراف متن ظاهر می شود:

اما این همه ماجرا نیست. اگر به متن زیادی نیاز دارید، می توانید از تابع rand با آرگومان های اضافی مانند زیر استفاده کنید:

=rand(x,y)

جایی که " ایکس' به معنی تعداد پاراگراف ها است و ' y» تعداد جملات هر پاراگراف است. مثلا، = رند (20.5) 20 پاراگراف با پنج عبارت درج خواهد شد. ولی = رند (7) 7 پاراگراف 3 جمله ای درج می کند.

روش 2: استفاده از lorem()

برای درج لورم ایپسوم خوب قدیمی به عنوان نمونه - از تابع lorem () استفاده کنید. دستور زیر را تایپ کرده و Enter را فشار دهید:

و ما این متن تمام لاتین را دریافت می کنیم

تابع lorem() نیز به راحتی آرگومان های اضافی مانند rand() را در قالب تعدادی پاراگراف و جمله می پذیرد. بدون آرگومان، تابع به طور پیش فرض 3 پاراگراف با 3 جمله را درج می کند.

روش 3. تابع rand.old().

استفاده مشابه دستورات قبلی است:

=rand.old()

و Enter را فشار دهید.

تابع rand.old() برای سازگاری با دفتر قدیمی تا سال 2003 باقی مانده است. روش استفاده مانند دو مورد قبلی است، فقط متن از همان عبارات تشکیل شده است "از این رول های نرم فرانسوی بیشتر بخورید و چای بنوشید." این عبارت برای همه کسانی که گاهی مجبور بودند با فونت کار کنند، شناخته شده است.

شما می توانید آرگومان ها را مانند دو روش اول ارسال کنید.

این همه، متن ها تولید شده اند، حالا می توانید بیشتر از این رول های نرم فرانسوی بخورید و چای بنوشید :)

آیا با استفاده از توابع بالا توانستید متن را وارد کنید؟

در مقاله‌های قبلی در مجموعه «پر کردن خودکار اسناد»، در مورد نحوه ایجاد رابط کاربری برنامه، سازماندهی اعتبارسنجی ورودی و دریافت عدد به صورت کلمات بدون استفاده از کد VBA صحبت کردم. در این مقاله نهایی، ما در مورد جادو صحبت خواهیم کرد - انتقال تمام مقادیر لازم از یک کتاب کار اکسل به یک سند Word. بگذارید نتیجه نهایی را به شما نشان دهم:

شرح مکانیسم

برای شروع، من به طور کلی نحوه انتقال داده ها به یک سند Word را به طور کلی شرح می دهم. اول از همه، ما به یک الگوی سند Word نیاز داریم که شامل تمام نشانه گذاری ها، جداول و آن قسمت از متن است که بدون تغییر باقی می ماند. در این الگو، باید مکان هایی را که مقادیر از کتاب کار اکسل جایگزین می شوند، تعریف کنید - راحت ترین راه برای انجام این کار با کمک نشانک ها است. پس از آن، باید داده های اکسل را به گونه ای مرتب کنید که با قالب Word مطابقت داشته باشد، و در آخر، خود رویه انتقال را در VBA بنویسید.

بنابراین، اول چیزها.

یک الگوی سند Word ایجاد کنید

همه چیز در اینجا بسیار ساده است - ما یک سند معمولی ایجاد می کنیم، متن را تایپ و قالب بندی می کنیم، به طور کلی، برای به دست آوردن فرم لازم به دست می آوریم. در مکان هایی که لازم است مقادیر را از Excel جایگزین کنید، باید بوکمارک ایجاد کنید. این کار به روش زیر انجام می شود:

بنابراین، شما باید همه نشانک‌ها را ایجاد کنید، یعنی تمام مکان‌هایی را که داده‌های اکسل در آن درج می‌شوند، علامت‌گذاری کنید. فایل به دست آمده باید به عنوان یک "الگوی MS Word" با استفاده از "File" -> "Save As..." ذخیره شود.

آماده سازی داده های اکسل

برای راحتی، تصمیم گرفتم تمام داده هایی را که باید به سند Word منتقل شوند در یک کاربرگ جداگانه به نام نشانک ها - نشانک ها قرار دهم. این برگه دارای دو ستون است: ستون اول شامل نام نشانک ها (دقیقاً همانطور که در سند Word نامگذاری شده اند) و دومی حاوی مقادیر مربوطه است که باید منتقل شوند.

برخی از این مقادیر مستقیماً از برگه ورودی داده و برخی از جداول کمکی واقع در برگه پشتیبانی به دست می آیند. در این مقاله، من فرمول هایی را که مقادیر مورد نظر را محاسبه می کنند، تجزیه و تحلیل نمی کنم، اگر چیزی واضح نیست، در نظرات سؤالات خود را بپرسید.

در این مرحله، مهم است که تمام نام های نشانک ها را به درستی مشخص کنید - صحت انتقال داده ها به این بستگی دارد.

روش انتقال

اما این جالب ترین است. دو گزینه برای اجرای کد انتقال داده وجود دارد:

  • کد در یک کتاب کار اکسل اجرا می شود، داده ها هر بار یک مقدار به Word منتقل می شوند و بلافاصله در سند قرار می گیرند.
  • کد در یک سند Word جداگانه اجرا می شود، تمام داده ها از Excel در یک دسته منتقل می شوند.

از نقطه نظر سرعت اجرا، به خصوص با تعداد زیادی بوکمارک، گزینه دوم بسیار جذاب تر به نظر می رسد، اما به اقدامات پیچیده تری نیاز دارد. همونی که استفاده کردم

در اینجا چیزی است که باید انجام شود:

  • یک الگوی سند Word با قابلیت ماکرو ایجاد کنید.این الگو حاوی کد VBA قابل اجرا خواهد بود.
  • در قالب ایجاد شده باید یک برنامه نوشته شده با VBA قرار دهید.برای انجام این کار، هنگام ویرایش یک قالب، کلیدهای ترکیبی Alt + F11 را فشار دهید و کد برنامه را در پنجره ویرایشگر ویژوال بیسیک باز شده وارد کنید.
  • در یک کتاب کار اکسل، کدی را بنویسید که رویه پر را از قالب ورد تازه ایجاد شده فراخوانی کند.

من متن رویه را در مقاله ارائه نمی دهم - می توان آن را به راحتی در فایل FillDocument.dotm واقع در پوشه Template در آرشیو مثال مشاهده کرد.

چگونه می توانید از همه اینها برای حل مشکل خاص خود استفاده کنید؟

من می دانم که در کلمات همه چیز بسیار ساده به نظر می رسد، اما در عمل چه اتفاقی می افتد؟ پیشنهاد می کنم فقط از گزینه آماده استفاده کنید. بایگانی را با مثال دانلود کنید، در یک کتاب کار اکسل، کلید ترکیبی Alt + F11 را فشار دهید تا ویرایشگر ویژوال بیسیک باز شود و تمام نظرات من در مورد برنامه را بخوانید. برای اینکه برنامه را مطابق با نیاز خود تغییر دهید، فقط باید مقدار چند ثابت را تغییر دهید، آنها در همان ابتدای برنامه قرار می گیرند. شما می توانید آزادانه کل متن برنامه را در پروژه خود کپی کنید.

ساختار آرشیو

آرشیو ضمیمه این مقاله حاوی چندین فایل است.

فایل اصلی یک کتاب کار اکسل به نام «تأیید تأییدیه» است. در این کتاب کار 4 کاربرگ وجود دارد که تنها دو مورد از آنها نمایش داده می شود: "ورودی" - یک برگه ورود اطلاعات و "پایگاه داده" - آرشیو تمام اسناد وارد شده.

پوشه Templates شامل الگوهای سند Word است. یکی از آنها قالبی است که شامل یک برنامه پر کردن نشانک است و دومی فرمی برای پر کردن است. شما می توانید از قالب با برنامه بدون تغییر استفاده کنید، اما فرم برای پر کردن، البته، باید مطابق با نیاز شما تغییر یابد.

چگونه مثال "برای خودتان" را دوباره کار کنید؟

  1. یک الگوی سند Word را برای تکمیل آماده کنید. تمام نشانک های لازم را در آن ایجاد کنید و آن را به عنوان "قالب MS Word" ذخیره کنید.
  2. فایل FillDocument.dotm را از آرشیو پیوست شده به این مقاله در پوشه با قالب آماده شده کپی کنید. این فایل وظیفه پر کردن بوک مارک های قالب را بر عهده دارد و نیازی به تغییر چیزی در آن نیست.
  3. یک کتاب کار اکسل برای ورود اطلاعات آماده کنید. این شما هستید که تصمیم می گیرید که آیا رابط کاربری "پیشرفته" داشته باشد و محاسبات مختلف را انجام دهد. نکته اصلی این است که شامل یک کاربرگ با جدول تناظر بین نام نشانک در قالب Word و مقداری است که باید جایگزین شود.
  4. کد برنامه VBA را از فایل نمونه در کتاب کار آماده شده وارد کنید. همه ثابت ها را با توجه به پروژه خود جایگزین کنید.
  5. تست عملکرد صحیح
  6. فعالانه لذت ببرید!

آ، نام خانوادگی در ستون بو حرفه ها در ستون سی.

2. یک سند word (doc. یا .docx) ایجاد کنید


(آ), (ب)و (ج).

(آ), (ب)و (ج) (آ)- نام، (ب)- نام خانوادگی، (ج)- حرفه

تنظیماتبرنامه ها.

3. مسیرهایی را برای فایل ها و پوشه ها انتخاب کنید


انتخاب کنید

4. برگه ها و ردیف های داده های مورد نظر را تنظیم کنید


برگه های داده فایل اکسل

ردیف های داده فایل اکسل برگه های داده فایل اکسل

1 .

اگر می‌خواهید همه شیت‌ها و/یا ردیف‌های فایل اکسل خود با داده‌ها در تشکیل سند مشارکت داشته باشند، روی دکمه مناسب در سمت راست با کتیبه کلیک کنید. شماره(کتیبه آن به تغییر خواهد کرد همه).

5. قالب نام را برای فایل های word جدید تنظیم کنید


قالب نام را برای فایل های word جدید تنظیم کنید:

قالب جدید نام فایل های wordالگویی برای نام اسناد جدید (فایل های word) تولید شده توسط برنامه است. در اینجا، قالب نام شامل نام ستون‌های فایل اکسل است که توسط پرانتزهای فرفری قاب شده‌اند: (آ)و (ب). هنگام ایجاد یک سند جدید، برنامه جایگزین همه خواهد شد (آ)و (ب)مقادیر سلول مربوطه از فایل اکسل - این نام سند جدید (فایل word) خواهد بود.

می توانید کاراکترهای حاشیه خود را در برگه تنظیم کنید تنظیماتبرنامه ها.

6. روی «ایجاد» کلیک کنید


روی دکمه کلیک کنید تولید می کنندو پیشرفت روی صفحه ظاهر می شود. اسناد (فایل های word) دقیقاً به همان میزانی ایجاد می شوند که بسیاری از خطوط فایل اکسل در تشکیل آن نقش دارند.

7. همه چیز


تمام اسناد (فایل های word) ایجاد شده اند و در پوشه مشخص شده در آن قرار دارند پوشه ای برای ذخیره فایل های word جدید. همه چيز:)

Exwog- تولید کننده گزارش الگو از اکسل به ورد

تولید کننده فایل Word رایگان توسط قالب (فایل Word) بر اساس داده های فایل اکسل

روی سیستم عامل مک، ویندوز و لینوکس کار می کند

به شما امکان می دهد نام فایل های word ایجاد شده جدید را تنظیم کنید

به شما امکان می دهد برگه ها و ردیف هایی از داده های مورد نیاز را تنظیم کنید

به شما امکان می دهد تا کاراکترهای حاشیه را برای نام ستون های اکسل تنظیم کنید

آسان برای استفاده

داده های خود را در قالب اکسل (xls. و .xlsx.) ذخیره کنید و فایل های Word (doc. و .docx) را با چند کلیک ایجاد کنید :)


چگونه کار می کند؟

به فایل اکسل خود نگاهی بیندازید


در این مثال، فایل اکسل حاوی اطلاعاتی در مورد مشتریان است. هر خط مربوط به یک مشتری خاص است. نام ها در یک ستون هستند آ، نام خانوادگی در ستون بو حرفه ها در ستون سی.

برای مشاهده کلیک کنید

ایجاد یک سند word (.doc یا .docx)


برای مشاهده کلیک کنید

یک "الگو" (فایل-ورد) برای تولید اسناد جدید (فایل های word) ایجاد کنید. در اینجا متن "الگو" حاوی نام ستون های فایل اکسل است که توسط پرانتزهای فرفری قاب شده اند: (آ), (ب)و (ج).

این برنامه اسناد جدیدی را با توجه به "الگو" که جایگزین همه می شود تولید می کند (آ), (ب)و (ج)مقادیر سلول مربوطه از فایل اکسل: (آ)- نام، (ب)- نام خانوادگی، (ج)- حرفه

شما همچنین می توانید کاراکترهای حاشیه خود را در برگه تنظیم کنید تنظیماتبرنامه ها.

مسیرهایی را برای فایل ها و پوشه ها انتخاب کنید


مسیرها را برای فایل‌ها و پوشه‌ها انتخاب کنید (دکمه‌های دارای برچسب انتخاب کنید). در برنامه مسیرهای زیر را مشخص می کنید:

فایل اکسل با داده (*.xls، *.xlsx)- این مسیر فایل اکسل شما با داده ها (اطلاعات مشتری) است.

فایل قالب ورد (*.doc، *.docx)مسیر "قالب" شما (فایل word ایجاد شده در مرحله قبل) است.

پوشه ای برای ذخیره فایل های word جدید- این مسیر به پوشه ای است که برنامه اسناد جدید تولید شده را در آن ذخیره می کند.

برای مشاهده کلیک کنید

برگه ها و ردیف های داده های مورد نظر را تنظیم کنید


برای مشاهده کلیک کنید

تعداد برگه ها و خطوط فایل اکسل خود را با داده ها (اطلاعات مربوط به مشتریان) که می خواهید اسناد را روی آنها ایجاد کنید، تنظیم کنید:

برگه های داده فایل اکسل- تعداد برگه های فایل اکسل شما که در تشکیل اسناد جدید نقش دارند.

ردیف های داده فایل اکسل- شماره خطوط برگه ها (برگ های مشخص شده در برگه های داده فایل اکسل) از فایل اکسل شما که در تشکیل اسناد جدید نقش دارد. بر اساس داده های هر خط مشخص شده، یک سند جداگانه (ورد-فایل) ایجاد می شود.

شماره گذاری برگه ها و خطوط در برنامه با شروع می شود 1 .

یک بار پس از جمع‌بندی نتایج المپیاد، زمانی که شرکت‌کنندگان باید نامه‌هایی حاوی نتایج رشته‌های گذرانده شده (یا قبول نشدن) ارسال کنند، متوجه شدم که دختر نشسته است و از دستان خود برای وارد کردن نتایج امتحان، نامش استفاده می‌کند. از دانش آموز و سایر اطلاعات در قالب نامه. در مقابل او چندین برگه چاپ شده از اکسل با نام و نمرات قرار داشت. Copy-Paste، Ctrl + C - Ctrl + V، انتقال نام کامل از اسمی به حالت جنسی، و بنابراین کار قبلاً با نیمی از اولین برگه از سه داده انجام شده است. فکر می‌کنید او چقدر می‌تواند ثابت بماند و داده‌ها را کپی کند و سپس نتیجه را بررسی کند؟ من برای مدت طولانی فکر می کنم، و ممکن است اشتباهات زیادی وجود داشته باشد. اما پس از آن او هنوز باید پاکت های پستی را امضا می کرد ... من برای وقت او متاسف شدم و در عرض چند دقیقه نشان دادم که چگونه می توان این فرآیند را با استفاده از وسایل ساده خودکار کرد. پس از یک گشت و گذار کوتاه، کار او در 20 دقیقه به پایان رسید.

در این درس، من به شما نشان خواهم داد که چگونه به سرعت اسناد (نامه ها، دعوت نامه ها) را با حداقل زمان ایجاد کنید. در نسخه‌های مختلف زبان‌ها، این فرآیند توصیف‌شده به شکل متفاوتی نامیده می‌شود. بنابراین در روسی "ادغام" و در انگلیسی - "ادغام".

امیدوارم "نامه های شادی" از صندوق بازنشستگی، اخطارهای مالیاتی به همین ترتیب ایجاد شود :)

ابزار

برای ایجاد اسناد، به OpenOffice Writer نیاز داریم. در آن ما یک الگوی نامه ایجاد خواهیم کرد. همچنین به OpenOffice Calc نیاز خواهید داشت. در آن، ما یک پایگاه داده با نام و آدرس افرادی که مثلاً می‌خواهیم به مهمانی دعوت کنیم، ایجاد می‌کنیم. به جای برنامه های بسته OpenOffice، می توان به راحتی از MS Word و Excel استفاده کرد. پایگاه داده به راحتی می تواند در MS Access قرار گیرد. و بنابراین، بیایید شروع کنیم.

ایجاد پایگاه داده

پایگاه داده چیزی نیست جز یک جدول در MS Excel یا OpenOffice Calc که در آن داده ها در ستون ها مرتب شده اند و ردیف اول برای نام گذاری ستون ها استفاده می شود. بیایید شروع کنیم، به عنوان مثال، ستون های "نام"، "شهر"، "کد پستی"، "آدرس". داده ها را وارد کرده و فایل را در دیسک ذخیره کنید.



منابع دیگر نیز می توانند به عنوان پایگاه داده استفاده شوند، مانند دفترچه آدرس Outlook یا پایگاه داده MS Access.

یک الگوی نامه ایجاد کنید

با ایجاد یک الگوی نامه، وضعیت کمی پیچیده تر است. از آنجایی که داده‌های جدول (پایگاه داده ما) به همان شکلی که هست در قالب جایگزین می‌شود، پس حرف باید مطابق با آن نوشته شود. اگر نام کامل شما به صورت اسمی در پایگاه داده شما باشد، بعید است که بتوانید از این فیلد در درخواست تجدیدنظر استفاده کنید «عزیز،<ФИО>!" و برای پاکت در خط "به:<ФИО>". در مورد دوم، نام کامل تا حدودی ناشیانه به نظر می رسد.

هنگام نوشتن یک الگوی نامه، توصیه می کنم با نوشتن نامه به یک شخص واقعی شروع کنید. شما می توانید به خودتان. سپس داده هایی را که از پایگاه داده می گیرید در آن برجسته کرده و با فیلدهای مناسب جایگزین کنید. قبل از جایگزینی متن انتخاب شده با یک فیلد، توصیه می کنم توجه داشته باشید که فیلد در پایگاه داده با چه حرفی باید شروع شود (کوچک یا بزرگ). البته، می توانید بلافاصله با فیلدها یک الگو ایجاد کنید، اما ممکن است متوجه برخی اشتباهات مانند ناهماهنگی در موارد نشوید.



قبلاً در قالب بالا مشخص است که ما به یک نام کامل در حالت جنسی و یک فیلد فقط شامل نام کوچک و میانی نیاز داریم. با فیلد اول، می‌توانیم «به» را با «گیرنده» جایگزین کنیم و سپس نام کامل در حالت اسمی کاملاً مناسب ما خواهد بود. با فیلد دوم، همه چیز تا حدودی پیچیده تر است و باید ستون دیگری در پایگاه داده ایجاد کنیم و آن را با داده های مناسب پر کنیم. در یکی از درس های زیر به شما خواهم گفت که چگونه این کار را به صورت خودکار انجام دهید، اما فعلاً فرض می کنیم که قبلاً چنین زمینه ای داریم.

برای درج یک فیلد و اتصال الگو به پایگاه داده، باید دنباله اقدامات زیر را انجام دهید. یک پایگاه داده را در OpenOffice Writer انتخاب کنید



و روی "Define" کلیک کنید.



سپس فیلد را از پایگاه داده متصل در جای مناسب وارد کنید. برای انجام این کار، Ctrl + F2 را فشار دهید یا "Fields" و "Other" را از منوی "Insert" انتخاب کنید. در پنجره ای که باز می شود، برگه "Databases" را انتخاب کنید، در نوع فیلد "Mail Merge fields" را انتخاب کنید، فیلد مناسب را از پایگاه داده انتخاب کنید و روی "Insert" کلیک کنید. خود پایگاه داده نیز در این پنجره قابل انتخاب است.



پس از درج یک فیلد، بدون بستن پنجره فعلی، متنی را که قرار است با فیلد بعدی جایگزین شود انتخاب کنید، فیلد را انتخاب کنید و دوباره روی "درج" کلیک کنید. و به همین ترتیب برای هر یک از زمینه ها.

برای MS Word، وضعیت تا حدودی مشابه و شاید راحت تر است. پس از ایجاد جدول در MS Excel، MS Word را اجرا کرده و به تب "Mailouts" بروید. در این برگه، می توانید سه مرحله لازم را مشاهده کنید: "شروع ادغام"، "نوشتن سند و درج فیلدها" و "تکمیل". همچنین یک مرحله میانی "مشاهده نتیجه" وجود دارد، اما اختیاری است.

و بنابراین کار با انتخاب یک سند آغاز می شود. این می تواند حروف، برچسب، یک سند عادی Word باشد. همچنین می‌توانید جادوگر ادغام را در اینجا اجرا کنید، که شما را در تمام مراحل این فرآیند راهنمایی می‌کند. مرحله بعدی انتخاب گیرنده، یعنی پایگاه داده است. در اینجا می توانید یک پایگاه داده آماده (مثلاً جدول MS Excel ایجاد شده در مرحله قبل) را انتخاب کنید یا یک لیست جدید ایجاد کنید. پس از انتخاب لیست، دکمه های "درج فیلد ادغام"، "ویرایش لیست گیرندگان" و غیره فعال می شوند. از طریق گفتگوی "ویرایش لیست گیرندگان" که با دکمه مربوطه باز می شود، می توانید از کل لیست فقط موارد را انتخاب کنید. سوابق لازم برای ادغام







هنگام درج فیلدها، با کلیک بر روی دکمه "انتخاب فیلدها ادغام"، همه فیلدها را به رنگ خاکستری برجسته می کنم. در غیر این صورت، اگر چنین فیلدهایی زیاد باشد، ممکن است در متن گم شوند.

و بنابراین، قالب آماده است.

تولید نامه

مرحله آخر، تولید حروف است. در OpenOffice، برای این کار، در منوی "Tools"، "Mail Merge Wizard ..." را انتخاب کنید و تمام مراحل پیشنهادی را برای ترکیب قالب ما با پایگاه داده طی کنید.





در کادر محاوره ای مشاهده می کنیم که از 8 نقطه پیشنهادی نیازی به اجرای برخی از نقاط نداریم. بنابراین ما قبلا سند را ایجاد کرده ایم و نیازی به ویرایش آن نداریم، همچنین بلوک آدرس را قبلاً درج کرده ایم. اما به ترتیب برویم.

ابتدا انتخاب می کنیم که بر اساس سند فعلی حروف ایجاد کنیم و روی "بعدی" در پایین پنجره کلیک کنید. نکته دوم این است که آیا این نامه کاغذی را خواهیم داشت یا ایمیل. برای اینکه نامه در یک فایل ذخیره شود، اولین مورد را انتخاب کنید. روی "بعدی" کلیک کنید. در پاراگراف سوم به ما پیشنهاد ایجاد بلوک آدرس داده شده است، اما از آنجایی که آن را به صورت دستی ایجاد کرده ایم، تیک تمام کادرها را برداریم و به مرحله بعد می رویم. در اینجا به ما پیشنهاد درج درخواست تجدیدنظر می‌شود، اما قبلاً آن را نیز داریم، بنابراین روی «بعدی» کلیک کنید. در پاراگراف ششم می توانید سند را ویرایش کنید، با فیلدهای درج شده از پایگاه داده به سند نگاه کنید و در صورت لزوم برخی از فیلدها را حذف کنید.



در مرحله 7، پیشنهاد می شود که هر یک از فایل های ایجاد شده در نتیجه اتصال الگو به پایگاه داده ویرایش شود. و در نهایت در مرحله 8 آخر می توانید انتخاب کنید که با مدارک دریافتی چه کاری انجام دهید. می توانید از طریق ایمیل ذخیره، چاپ یا ارسال کنید. در این صورت می توانید تمام اسناد را در یک فایل یا هر سند را جداگانه ذخیره کنید.

در MS Word، فرآیند ادغام با کلیک بر روی دکمه "یافتن و ادغام" تکمیل می شود.



از منوی کشویی مشخص است که همه نامه ها قابل چاپ و ارسال از طریق ایمیل هستند، اما مشخص نیست که همه آنها را می توان در یک فایل ذخیره کرد. برای ذخیره، اولین مورد - "تغییر اسناد فردی" را انتخاب کنید. با این کار یک سند جدید باز می شود که در آن هر حرف جدید در یک صفحه جدید قرار می گیرد و در اینجا می توان این فایل را قبلاً ذخیره کرد.

نتیجه

و بنابراین، در این درس، نحوه استفاده از ابزار ادغام برای ایجاد اسناد بر اساس یک الگو را یاد گرفتید. بیایید به طور خلاصه دنباله اقدامات را بنویسیم:

  1. ایجاد یک پایگاه داده در پردازشگر صفحه گسترده ضروری است که از آن داده ها برای پر کردن فیلدها گرفته می شود.
  2. شما باید یک الگوی نامه ایجاد کنید.
  3. ادغام را انجام دهید و نتیجه را ذخیره کنید.