public ActionResult PrintPdf(string id = "")
{
var report = this.GetReport2(id);
var settings = new Stimulsoft.Report.Export.StiPdfExportSettings() { ImageQuality = 1.0f, ImageResolution = 300, EmbeddedFonts = true, UseUnicode = false, StandardPdfFonts = true };
var service = new Stimulsoft.Report.Export.StiPdfExportService();
var stream = new MemoryStream();
service.ExportTo(report, stream, settings);
return File(stream.ToArray(), "application/octet-stream", DateTime.Now.Ticks + ".pdf");
}
خوب حالا نحوه نمایش یه گزارش رو از درون یه برنامه ویندوزی آموزش می دم.فرض کرده بودیم که یه "فرم فیلتر گزارش" داریم که یه سری پارامتر واسه تعیین محدوده گزارش از ما می گیره، واسه اینکه بتونیم از کلاسهای استیمول استفاده کنیم نیازه که dll های مربوطه رو به پروژه اضافه کنیم.این اسمبلی ها به طور پیش فرض تو مسیر زیر نصب می شن:
C:\Program Files\Stimulsoft Reports.Net 2009.2 Trial\Bin(من از نسخه 2009.2 Stimulsoft Report.Net استفاده می کنم.)
من معمولا همه اسمبلی ها رو به پروژه اضافه می کنم اما برای این قسمت اضافه کردن Stimulsoft.Report.dll کفایت می کنه.لیست تمام اسمبلی ها به قرار زیر می باشد:
Stimulsoft.Base.dll
اصلی ترین اسمبلی برای گزارش گیری.
Stimulsoft.Editor.dll
اسمبلی مورد نیاز Text Editor که در Designer به کار می رود.
Stimulsoft.Controls.dll
اسمبلی کنترل های استفاده شده در گزارش ساز.
Stimulsoft.Controls.Win.dll
اسمبلی کنترل های استفاده شده در گزارش ساز.
Stimulsoft.Report.dll
مهم ترین اسمبلی که شامل توابع اصلی برای ساخت گزارش می باشد.
Stimulsoft.Report.Win.dll
اسمبلی دربردارنده .WinForms Viewer
Stimulsoft.Report.Design.dll
اسمبلی دربردارنده . WinForms Designer
Stimulsoft.Database.dll
این اسمبلی شامل توابع مورد نیاز برای ساختن connection string و نمایش QueryBuilder می باشد.
Stimulsoft.Report.Web.dll
این اسمبلی به نمایش گزارشات در محیط وب کمک می کند و شامل کنترل Web Viewer می باشد.
خوب پس از تعیین پارامترهای لازم و زدن دکمه "نمایش گزارش" در رخداد کلیک دکمه کارهای زیر رو انجام می دیم:
در صورتی که این نام ها متفاوت باشند با پیغام خطا مواجه خواهید شد.
در صورتی که نام ستونهای دیتاست با نام ستونهای استفاده شده در گزارش یکسان نباشد با پیغام خطا مواجه خواهید شد.
خوب خسته نباشد به همین سادگی میشه یه گزارش رو ساخت و به کاربر نمایش داد، به نظر من این روش ساده ترین راهه که میشه انجام داد و نیاز به کد نویسی زیادی هم نداره هرچند که میشه به شیوه های دیگه ای هم داده های مورد نیاز گزارش رو تامین کرد.در مورد فیلتر کردن داده ها بر اساس پارامترهای دریافتی از "فرم فیلتر گزارش"، استفاده از یه دیتاست که با استفاده از یک کوئری شامل where clause که داده ها رو از بانک اطلاعاتی واکشی می کنه بسیار بهینه تر خواهد بود تا اینکه شما همه دیتا ها رو از جدول واکشی کنید و بعد سمت کلاینت (و نه سمت سرور بانک اطلاعاتی) اونا رو فیلتر کنید.
سناریوی کلی به این صورته که شما یه پروژه دارید (فرضا با C# و ویندوز فرم) و یه منوی گزارشات که لیستی از گزارشات رو به کاربر نشون میده با انتخاب هر گزارش یه فرم باز میشه که اصطلاحا من بهش میگم "فرم فیلتر گزارش" کاربر یه سری پارامترهای فیلتر واسه گزارشش تعیین می کنه و دکمه نمایش گزارش رو میزنه، پردازش های لازم برای نمایش گزارش انجام میشه و نهایتا یه گزارش ترو تمیز به کاربر نمایش داده میشه.ای روند کاریه که معمولا برای گزارش گیری انجام میشه.حالا میایم قدم به قدم یه گزارش رو می سازیم:
روال کار من به این صورته که ابتدا با Designer استیمول گزارش رو می سازم بعد یه جایی ذخیره می کنم و بعد از توی کد گزارش رو Load کرده و به کاربر نمایش می دم.
اولین مرحله برای ساخت گزارش (که معمولا از روی یه طرح اولیه که روی کاغذ کشیدین شروع میشه) وصل شدن به دیتابیس برای واکشی دیتا و فراهم نمودن ستون های گزارشه.فرض هم بر اینه که دیتابیس SQL Server هست.از Tab دیکشنری (Dictionary Tab) که به طور پیش فرض در سمت راست Designer استیمول هست New Item و New Connection رو میزنیم.

از پنجره Select Type of connection باز شده Sql Connection ر انتخاب می کنیم

در پنجره New Sql Connection،Connection String مورد نظر را وارد کرده و Ok می کنیم.(از دکمه Test جهت اطمینان از برقراری ارتباط می توان استفاده کرد)

حالا از همون تب دیکشنری، New Item->New Data Source رو انتخاب می کنیم.

پنجره New Data Source باز می شود که با دابل کلیک بر روی نام connection (ساخته شده در مرحله قبلی) می توان برای ایجاد ارتباط استفاده کرد.

همانطور که در تصویر زیر می بینید در پنجره Select Data لیست تمامی جداول،ویوها و روال های ذخیره شده در دیتا بیس وجود دارد و برای ایجاد دیتا سورس می توان از آنها استفاده کرد و یا در صورت نیاز از دکمه Query New در بالای صفحه استفاده کرد.

در این مثال از دکمه Query New برای ساخت کوئری استفاده می کنیم در این پنجره می توان کوئری مورد نظر را نوشت و از دکمه Run Query Builder از اجرای صحیح کوئری مطمئن شد، بعد جهت بازیابی ستونهای حاصل از کوئری حتما می بایست دکمه Retrieve Columns را زده تا ستونها در لیست Columns قرار گیرند.

خوب حالا که ستونها لیست شدن میشه نام و نوع هر کدوم رو در صورت نیاز تو پنجره Property (پایین و سمت راست عکس فوق) تغییر داد.در اینجا چند نکته وجود داره:
اول اینکه شاید خیلی ها بگن که ما می خوایم داده هامون رو فیلتر کنیم، تو همین کوئری، Where Clues لازم رو می نویسیم تا فقط داده های مورد نظرمون رو نمایش بده.باید بگم میشه اینکار رو انجام داد اما مشکلی که وجود داره اینه که اینجوری ما یه گزارش داریم که همیشه با یه فیلتر خاص به کاربر نشون داده میشه و امکان اینکه کاربر بخواد خودش فیلتر رو تعیین کنه وجود نداره و گزارش گیری یه حالت استاتیک میشه.(اگه فکر می کنید واقعا نیازی به فیلتر گزارش توسط کاربر نیست میتونید این کارو بکنید)
نکته دوم که خیلی مهمه نام دیتا سورس هست که الان تو شکل فوق DataSource1 داده شده.سعی کنید یه نام با مسما انتخاب کنید که بعدا تو کد به کارمون می آد!
حالا OK رو میزنیم تا این دیتا سورس به نود Queries تو پنجره Select Data اضافه بشه بعد هر کدوم از جداول یا ویوها رو هم که نیاز دارم (به غیر از این دیتا سورس که خودمون نوشتیم) تیک می زنیم تا به مجموعه دیتا سورس مون اضافه بشه.

اکنون با توجه به طرحی که رو کاغذ واسه گزارش داریم شروع به قرار دادن فیلدها روی صفحه گزارش می کنیم.برای این کار از یه کامپوننت به اسم Data استفاده میشه و فیلدهای مورد نظر تو این کامپوننت روی صفحه گزارش قرار می گیره.برای نمایش عنوان ستونها در هر صفحه از Header استفاده می کنیم و نام هر ستون رو توی این کامپوننت می ذاریم تا توی هر صفحه نمایش داده بشه.همه کامپوننت های استیمول سمت راست Designer به صورت عمودی قرار داره.پس از طراحی گزارش میشه از تب Preview استفاده کرد.کلا طراحی گزارش خیلی به سلیقه شما بستگی داره و تقریبا هر نوع امکانی واسه طراحی تو استیمول وجود داره و حتی اگه وجود نداشت می تونید خودتون بنویسید و به استیمول اضافه کنید!

طراحی گزارش که تموم شد اونو یه جا ذخیره کنید تا تو پست بعد نحوه load کردن گزارش،ایجاد فرم فیلتر و نمایش گزارش فیلتر شده رو (همگی از تو کد C#) بهتون بگم.
/* /*]]>*/
لیستی از ویژگی های عمده:
۱.از زبان فارسی به صورت کامل پشتیبانی می کنه و امکان فارسی شدن رابط کاربری وجود داره.

۲.دارای اینترفیس ساده با انعطاف پذیری زیاد که با یه ساعت کار کردن باهاش میشه با اکثر قابلیت هاش آشنا شد.

۳.توانایی طراحی گزارش در زمان اجرا (runtime) که ویژگی بارزی برای تولید گزارشات پویاست.
۴.از طیف وسیعی از پایگاه های داده مانند MS SQL Server, Oracle, My SQL, Firebird,… - انواع داده های ADO.Net و XML به عنوان منبع اطلاعاتی (data source) پشتیبانی می کنه.
۵.گزارش های تولید شده رو میشه به فرمت های مختلفی مانند pdf,word,excel,html,jpeg,… ذخیره کرد.

