.:: محمدحسین فخرآوری ::.

با سلام و خسته نباشید به شما دوست عزیز به قسمت موضوعات وبلاگ مراجعه کنید. 09173700916

خروجی pdf بدون باز کردن ریپورت همراه با تیک زدن EmbeddedFonts

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");
    }

محمدحسین فخرآوری ، دوشنبه ۱۴۰۰/۰۹/۱۵ ، 7:41

property in report designer

محمدحسین فخرآوری ، یکشنبه ۱۳۹۲/۰۵/۰۶ ، 21:33

ساخت گزارش و اجرای آن از درون كد[قسمت دوم]

خوب حالا نحوه نمایش یه گزارش رو از درون یه برنامه ویندوزی آموزش می دم.فرض کرده بودیم که یه "فرم فیلتر گزارش" داریم که یه سری پارامتر واسه تعیین محدوده گزارش از ما می گیره، واسه اینکه بتونیم از کلاسهای استیمول استفاده کنیم نیازه که 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 که داده ها رو از بانک اطلاعاتی واکشی می کنه بسیار بهینه تر خواهد بود تا اینکه شما همه دیتا ها رو از جدول واکشی کنید و بعد سمت کلاینت (و نه سمت سرور بانک اطلاعاتی) اونا رو فیلتر کنید. 


محمدحسین فخرآوری ، چهارشنبه ۱۳۹۲/۰۲/۲۵ ، 13:9

ساخت گزارش و اجرای آن از درون كد[قسمت اول]


سناریوی کلی به این صورته که شما یه پروژه دارید (فرضا با 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#) بهتون بگم.

/* /*]]>*/

 

 

محمدحسین فخرآوری ، چهارشنبه ۱۳۹۲/۰۲/۲۵ ، 13:6

درباره استیمول

نرم افزار StimulSoft Report ابزاریه برای تولید گزارشات بر مبنای تکنولوژیMicrosoft.Net .این نرم افزار تولید یه شرکت روسی به آدرس http://www.stimulsoft.com است و من حدود دو سالی میشه که از اون برای تولید گزارشات توی وب و ویندوز استفاده می کنم.

لیستی از ویژگی های عمده:

۱.از زبان فارسی به صورت کامل پشتیبانی  می کنه و امکان فارسی شدن رابط کاربری وجود داره.

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

۳.توانایی طراحی گزارش در زمان اجرا (runtime) که ویژگی بارزی برای تولید گزارشات پویاست.

۴.از طیف وسیعی از پایگاه های داده مانند MS SQL Server, Oracle, My SQL, Firebird,… - انواع داده های ADO.Net و XML به عنوان منبع اطلاعاتی (data source) پشتیبانی می کنه.

۵.گزارش های تولید شده رو میشه به فرمت های مختلفی مانند pdf,word,excel,html,jpeg,… ذخیره کرد.

محمدحسین فخرآوری ، سه شنبه ۱۳۹۲/۰۲/۲۴ ، 13:10

جدا کردن ارقام پولی در استیمول ریپورت

محمدحسین فخرآوری ، دوشنبه ۱۳۹۱/۰۶/۲۷ ، 12:55