PDA

View Full Version : ساخت گزارش با Word



NIMA_1981
پنج شنبه 21 دی 1391, 22:51 عصر
سلام دوستان چطوری میشه با ورد برای سی شارپ گزارش ساخت یعنی به جای کریستال ریپورت از ورد استفاده کرد قالب رو در word ساخت و در برنامه کد نویسی کنیم و بتونیم گزارش را بسازه
با تشکر

khokhan
پنج شنبه 21 دی 1391, 23:11 عصر
بفرما اینم نمونه

خوش باشین:لبخند:

ali.bahrami
جمعه 22 دی 1391, 08:55 صبح
بفرما اینم نمونه

خوش باشین:لبخند:

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

NIMA_1981
جمعه 22 دی 1391, 15:14 عصر
ممنون از شما اگه میشه ساخت template هم بگید و مثال شما برای متن بود اگه میشه بفرمایید عکس رو چطوری باید قرار بدم

khokhan
جمعه 22 دی 1391, 17:31 عصر
سلام بر همه

در خصوص نحوه کار این برنامه عارضم خدمت کلیه عزیزان وسروران که به نحو زیر عمل می گردد که

1 - ابتدا به تعداد مواردی که قصد ارسال به فایل ورد را دارید در داخل فایل ورد آبجکتی از نوع فیلد ایجاد می کنیم

2 - در داخل برنامه ابتدا محل ونوع فایل (word ) را تعریف می کنیم ومی شناسانیمش :لبخند:

اینطوری :


Object oMissing = System.Reflection.Missing.Value;

Object oTrue = true;
Object oFalse = false;

Word.Application oWord = new Word.Application();
Word.Document oWordDoc = new Word.Document();


oWord.Visible = true;

Object oTemplatePath = System.Windows.Forms.Application.StartupPath+"\\Report.dot";

3 - پس از شناساندن نوع ومحل فایل word هریک از تکست باکسها را به محل فیلد مخصوص به خود (دونه به دونه):چشمک: داخل فایل word پاس می دهیم

اینطوری :


foreach (Word.Field myMergeField in oWordDoc.Fields)
{

iTotalFields++;
Word.Range rngFieldCode = myMergeField.Code;
String fieldText = rngFieldCode.Text;

if (fieldText.StartsWith(" MERGEFIELD"))
{

Int32 endMerge = fieldText.IndexOf("\\");
Int32 fieldNameLength = fieldText.Length - endMerge;
String fieldName = fieldText.Substring(11, endMerge - 11);

fieldName = fieldName.Trim();
if (fieldName == "date")
{
myMergeField.Select();
oWord.Selection.TypeText(textBox1.Text);
}

البته نکته مهمی که باید یادتان باشد این است که ابتدا ورد انتراپت وآفیس را به using ها اضاف نمائید

یعنی :


using Microsoft.Office;
using Word = Microsoft.Office.Interop.Word;



وهمچنین Microsoft.Office.Interop.Word رو هم حتما به ریفرنس برنامه تون افزوده باشین

از درگاه ایزد مهر آفرین برای همه شما عزیزان علو درجات را مسئلت دارم :لبخند:

ایدکم الله بخیرا

khokhan
جمعه 22 دی 1391, 19:23 عصر
سلام علیم جمیعا

آگه عمری باقی بود طریقه باز کردن فایل word در داخل فرم برنامه رو اینجا می زارم تا ببینین :لبخند:

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

NIMA_1981
جمعه 22 دی 1391, 21:54 عصر
سلام علیکم
دوست عزیز اگه میشه در مورد استفاده از حلقه نیز توصیح بده مثلا یک جدول داریم می خوایم اطلاغات سطر به سطر اضافه بشه -من درست کردم اما خطا میده

khokhan
جمعه 22 دی 1391, 22:05 عصر
سطر به سطر کجا بره
منظورتون رو واضح بگین

NIMA_1981
جمعه 22 دی 1391, 22:36 عصر
مثلا یک جدول دارم که شامل اسم و فامیل و غیره که ایم ها رو میره از بانک می خونه حالا میخوام اینا رو تو یک جذول سطر به سطر نشون بدم
98280

uniqueboy_ara
جمعه 22 دی 1391, 23:21 عصر
- ابتدا به تعداد مواردی که قصد ارسال به فایل ورد را دارید در داخل فایل ورد آبجکتی از نوع فیلد ایجاد می کنیم
مهندس جان میشه این قسمتشو یه توضیح مختصر بدی؟
چجوری یه فیلد بسازیم؟

khokhan
شنبه 23 دی 1391, 02:03 صبح
خدمت باسعادت سرور گرامی عرض شود که ایجاد فیلد در داخل فایل word بدین شرح است که :


1 - از قسمت اینزرت quick part را انتخاب واز منوی باز شده گزینه field را انتخاب می کنید



2 - بعد از ایجاد فیلد نوع آن را merge feild تعین ونام مناسبی اختصاص می دهید وتمام بقیه هم نداره :لبخند:


اینطوری

NIMA_1981
شنبه 23 دی 1391, 02:46 صبح
میشهسوال منم جواب بدید

khokhan
شنبه 23 دی 1391, 16:29 عصر
مثلا یک جدول دارم که شامل اسم و فامیل و غیره که ایم ها رو میره از بانک می خونه حالا میخوام اینا رو تو یک جذول سطر به سطر نشون بدم
98280


سلام
آقای نیما - 1981
محتویات دیتاگرید رو به این شیوه نمی توان انتقاد داد اما راههای دیگری هم هست .

خواستی نمونه برنامه می زارم برات

NIMA_1981
یک شنبه 24 دی 1391, 02:11 صبح
دوست من اگه لطف کنی ممنون میشم چون بیشتر گزارشات من اینجوی هستن
با تشکر فراوان

khokhan
یک شنبه 24 دی 1391, 18:13 عصر
دوست من اگه لطف کنی ممنون میشم چون بیشتر گزارشات من اینجوی هستن
با تشکر فراوان

سلام دارم خدمت همه دوستان خصوصا آقا نیما

همونطور که قولشو داده بودم یه برنامه مشتی واسط آماده کردم

این برنامه اطلاعات یک سری افراد رو از دیتابیس اکسس می گیره وتوی دیتا گرید نشون می ده

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

چند نکته اول اینکه خطوط جدول موجود در word رو اگه انتخاب کنین ورنگ سیاه رو براشون انتخاب کنین ظاهر می شن

دیوما اینکه من کل کار وانجام دادم اگه بد سلیقه باشه دیگه ببخشین هر طور که دلتون خواست می تونین تغییر ش بدین

سوم دیگه نداره همین تمام شد شاد باشین .... بدرود تا بعد :لبخند:

در ضمن با اینکه می دونم شما استادین اما نکات مهم رو جهت راهنمایی بالای دستورات داخل سورس نوشتم

NIMA_1981
یک شنبه 24 دی 1391, 23:32 عصر
مرسی از راهنمایی شما پس مثل مثال قبلی نمیشه template ساخت و اونو فراحوانی کنیم باید کل فایل توسط برنامه ساخته بشه

alias136790
سه شنبه 26 دی 1391, 20:35 عصر
سلام Khokhan عزیز
من یه متن که شامل رشته و عکس هست رو با استفاده از RichTextBox (با استفاده از خاصیت Rtf ،که RichTextBox داره) میخونم و تو دیتابیس Sql تو نوع nText ذخیره میکنم،
چجوری میتونم این متن رو تو Word نشون بدم،اگه متن فقط شامل رشته باشه خوب خیلی راحت میشه تو Sql تو نوع nvarchar ذخیره اش کرد و بعد خیلی
راحت تو Word نشونش داد، ولی اگه هم شامل رشته و عکس باشه توWord بصورت ناخوانا نشونش میده، میشه کمک کنین.