PDA

View Full Version : سوال: فرستادن اطلاعات به فایل word و چاپ گروهی آن



hadi-z
دوشنبه 07 آذر 1390, 11:06 صبح
با سلام
من یک فایل آماده word دارم که مربوط به کارنامه تحصیلی دانش آموزان است و شامل نام و نام خانوادگی و نام کلاس و یک جدول که نمرات در اون ثبت میشه.


78485

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

ممنون میشم کمکم کنید.

mehdi.mousavi
دوشنبه 07 آذر 1390, 11:36 صبح
با سلام من یک فایل آماده word دارم که مربوط به کارنامه تحصیلی دانش آموزان است و شامل نام و نام خانوادگی و نام کلاس و یک جدول که نمرات در اون ثبت میشه. حالا دنبال یه روش میگردم که تمام دانش آموزایی که تو دیتابیس ذخیره شدن رو با نمراتشون بشه تو اون فایل ورد ریخت و همشون رو به ترتیب و به صورت گروهی (نه یکی یکی) چاپ کرد. ممنون میشم کمکم کنید.

سلام.
ابتدا شما باید فایل Word خودتون رو تغییر بدید و در اون از Merge Field ها استفاده کنید، بدین ترتیب که جای هر فیلدی که قصد دارید اونو از طریق کدتون مقدار دهی کنید، یک Field در Word داشته باشید (این مقاله (http://msdn.microsoft.com/en-us/library/aa163918%28v=office.10%29.aspx) در دو قسمت (http://msdn.microsoft.com/en-us/library/aa140197%28v=office.10%29.aspx) شما رو با جزییات Merge Field ها آشنا میکنه). وقتی چنین فیلدهایی داشته باشید، اونوقت می تونید با استفاده از Word Automation اقدام به مقدار دهی اون مقادیر از درون کد کنید (به بخش Mail Merge از این مقاله (http://www.c-sharpcorner.com/UploadFile/amrish_deep/WordAutomation05102007223934PM/WordAutomation.aspx) رجوع کنید). در نهایت، میتونید درون کد Document ای بسازید که حاوی کلیه رکوردها باشه، سپس اون Document رو بازهم با استفاده از متود PrintOut (بدین شکل (http://stackoverflow.com/questions/878302/printing-using-word-interop-with-print-dialog)) چاپ کنید.

موفق باشید.

hadi-z
دوشنبه 07 آذر 1390, 13:08 عصر
سلام.
ابتدا شما باید فایل Word خودتون رو تغییر بدید و در اون از Merge Field ها استفاده کنید، بدین ترتیب که جای هر فیلدی که قصد دارید اونو از طریق کدتون مقدار دهی کنید، یک Field در Word داشته باشید (این مقاله (http://msdn.microsoft.com/en-us/library/aa163918%28v=office.10%29.aspx) در دو قسمت (http://msdn.microsoft.com/en-us/library/aa140197%28v=office.10%29.aspx) شما رو با جزییات Merge Field ها آشنا میکنه). وقتی چنین فیلدهایی داشته باشید، اونوقت می تونید با استفاده از Word Automation اقدام به مقدار دهی اون مقادیر از درون کد کنید (به بخش Mail Merge از این مقاله (http://www.c-sharpcorner.com/UploadFile/amrish_deep/WordAutomation05102007223934PM/WordAutomation.aspx) رجوع کنید). در نهایت، میتونید درون کد Document ای بسازید که حاوی کلیه رکوردها باشه، سپس اون Document رو بازهم با استفاده از متود PrintOut (بدین شکل (http://stackoverflow.com/questions/878302/printing-using-word-interop-with-print-dialog)) چاپ کنید.

موفق باشید.

ممنون از توجهتون
ولی اون دوتا لینک اولی که گذاشتید باز نمیشه: The specified CGI application encountered an error and the server terminated the process.

Mahmoud Zaad
دوشنبه 07 آذر 1390, 13:18 عصر
ممنون از توجهتون
ولی اون دوتا لینک اولی که گذاشتید باز نمیشه: The specified CGI application encountered an error and the server terminated the process.

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

hadi-z
دوشنبه 07 آذر 1390, 18:18 عصر
ممنون از راهنماییتون
ولی فقط یکم از اون دوتا مقاله اول سر در آوردم
کلا هنوز گنگم :ناراحت:

میشه بیشتر راهنمایی کنید(یکم ساده تر یا زیر دیپلم) :خجالت:

mmd2009
دوشنبه 07 آذر 1390, 20:14 عصر
با سلام

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

راه ساده گفتنش اینطوریه :

ببینید شما میتونید یک جدول با استفاده از چیزی که اقای موسوی فرمودند ( Word Automation) تو Document مورد نظرتون رو بسازید و سپس که طولش و عرض رو با استفاده از اندازه های خودتون تغییر بدید و فرضا اگر 20 دانش اموز دارید که 3 ستون نام و نام خانوادگی و نمره دارن . با توجه به این ساختار شما max جدول دانش اموزش رو برای تعداد ردیف ها قرار بدید و تعداد ستون ها رو هم بذارید 3 . حالا با استفاده از یک حلقه تک تک سلول هارو مقداری دهی بکنید. برای چنین کاری شما میتونید یک Foreach بکنید تو DataTable و row ها رو بکشید بیرون و یکی یکی مقدارشون رو بذارید تو ردیف های جدول بعدش هم که فایل وورد رو می بندیت.

موفق باشید.

hadi-z
دوشنبه 07 آذر 1390, 23:11 عصر
:لبخندساده: با تشکر ویژه از mmd2009 (http://barnamenevis.org/member.php?115786-mmd2009) و mehdi.mousavi

یه سوال کوچیک
من نمیدونم چطور میشه تو word2007 از Word Automation استفاده کرد.
میشه کمک کنید؟

mmd2009
دوشنبه 07 آذر 1390, 23:18 عصر
Word Automation در Vs هست.

من پیشنهاد میکنم ایجارو (http://www.c-sharpcorner.com/UploadFile/amrish_deep/WordAutomation05102007223934PM/WordAutomation.aspx)حتما یک نگاه بکنید به راحتی یک اموزش ساده در این مورد داده

موفق باشید

hadi-z
دوشنبه 07 آذر 1390, 23:32 عصر
مگه قرار نیست همه اطلاعاتی که تو Word Automation هست رو به فایل word بفرستیم

منظورم اینه که چطور اینا باهم رابطه دارن؟

mmd2009
دوشنبه 07 آذر 1390, 23:47 عصر
لینکی رو که دادم رو ببین خب کامل نوشته که. با استفاده از DLL ها رابطه برقرار میکنن.

hadi-z
سه شنبه 08 آذر 1390, 09:07 صبح
بازم از همگی ممنون
کارم خیلی راه افتاد

راستی من از اینجا: http://www.codeproject.com/KB/cs/TextInjector.aspx
یه نمونه دانلود کردم که به نظرم جالب اومد
ولی هرکاری کردم run time error میده و کار نمیکنه