گزارش گیری و چاپ

سوال شده توسط: علی شاکری

تاریخ ثبت: ۱۴۰۱/۰۱/۱۴

بازدید: 507

پاسخ: 14

تگ: Asp.net Core


سلام استاد اشرافی عزیز

برای گزارش گیری چه ابزاری مناسبه برای asp core؟

پاسخ ها
user

علی شاکری

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

از صبح دنبالشم ولی چیز بدرد بخوری پیدا نکردم

ممنون میشم راهنمایی کنید

user

محمد اشرافی

سلام علی جان  صبخ بخیر

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

user

محمد اشرافی

یعنی می خواید توی چه قالبی گزارش بگیرید

user

علی شاکری

مثلا چاپ گواهینامه و یا فاکتور و لیست کارمندان و…

و تبدیل به pdf یا اکسل

user

مهدی کشکلانی

یکیش SQL Server Report Service یکی هم Seal Report

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

user

علی شاکری

منظورم از گزارش فقط بحث چاپ و اکسپورت به pdf و excel هست

user

محمد اشرافی

من توی یکی از پروژه هام برای Excel از این پکیج استفاده کردم (gembox.spreadsheet)

 public class ReportModel
    {
        public string Format { get; set; } = "XLSX";
        public SaveOptions Options => FormatMappingDictionary[Format];
        public IDictionary<string, SaveOptions> FormatMappingDictionary => new Dictionary<string, SaveOptions>()
        {
            ["XLSX"] = new XlsxSaveOptions(),
            ["XLS"] = new XlsSaveOptions(),
            ["ODS"] = new OdsSaveOptions(),
            ["CSV"] = new CsvSaveOptions(CsvType.CommaDelimited),
            ["PDF"] = new PdfSaveOptions(),
            ["HTML"] = new HtmlSaveOptions() { EmbedImages = true },
            ["XPS"] = new XpsSaveOptions(),
            ["BMP"] = new ImageSaveOptions(ImageSaveFormat.Bmp),
            ["PNG"] = new ImageSaveOptions(ImageSaveFormat.Png),
            ["JPG"] = new ImageSaveOptions(ImageSaveFormat.Jpeg),
            ["GIF"] = new ImageSaveOptions(ImageSaveFormat.Gif),
            ["TIF"] = new ImageSaveOptions(ImageSaveFormat.Tiff)
        };
    }
    public class OrderReportToExcel : BaseService
    {

        public OrderReportToExcel(AppDbContext context) : base(context)
        {


        }

        public async Task<Stream> ExportReport(DateTime? startDate, DateTime? endDate)
        {
            var stream = new MemoryStream();
            var xlPackage = new ExcelPackage(stream);
            var sheet = xlPackage.Workbook.Worksheets.Add($"گزارشات");
            sheet.Cells.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
            sheet.Cells.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
            var orders = Table<Order>().Include(c => c.Details).ThenInclude(c => c.Product).Where(r => r.IsFinally);
            if (startDate != null)
            {
                orders = orders.Where(r => r.PaymentDate.Date >= startDate.Value.Date);
            }
            if (endDate != null)
            {
                orders = orders.Where(r => r.PaymentDate.Date <= endDate.Value.Date);
            }
            var values = await orders.OrderByDescending(d => d.PaymentDate).ToListAsync();

            sheet.Cells["A1"].Value = "شناسه سفارش";

            sheet.Cells["B1"].Value = "محصول";
            sheet.Cells["B1"].Style.WrapText = true;

            sheet.Cells["C1"].Value = "تعداد فروش";
            sheet.Cells["D1"].Value = "نوع محصول";
            sheet.Cells["E1"].Value = "تاریخ فروش";
            sheet.Cells["F1"].Value = "قیمت واحد";
            sheet.Cells["G1"].Value = "قیمت کل";

            var counter = 2;

            foreach (var item in values)
            {
                foreach (var orderDetail in item.Details.OrderByDescending(d => d.StackType))
                {
                    sheet.Cells[$"A{counter}"].Value = item.Id;
                    sheet.Cells[$"B{counter}"].Value = orderDetail.Product.ProductTitle;
                    sheet.Cells[$"C{counter}"].Value = orderDetail.Count;
                    var type = "";
                    switch (orderDetail.StackType)
                    {
                        case StackType.NimKilo:
                            type = "نیم کیلو";
                            break;
                        case StackType.YekKilo:
                            type = "یک کیلو";
                            break;
                        default:
                            type = orderDetail.GetWeight();
                            break;
                    };
                    sheet.Cells[$"D{counter}"].Value = type;
                    sheet.Cells[$"E{counter}"].Value = item.PaymentDate.ToPersianDateTime();
                    sheet.Cells[$"F{counter}"].Value = orderDetail.Price.TooMan();
                    sheet.Cells[$"G{counter}"].Value = orderDetail.TotalPrice;

                    counter += 1;
                }
            }
            var lastRecord = counter += 1;
            sheet.Cells[$"G{lastRecord}"].Value = values.Sum(s => s.Price).TooMan();
            sheet.Cells[$"G{lastRecord}"].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Double;
            sheet.Cells[$"C{lastRecord}"].Value = values.Sum(s => s.ItemCount).ToString("#,0");
            sheet.Cells[$"C{lastRecord}"].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Double;
            xlPackage.Save();
            stream.Position = 0;
            return stream;
        }
    }
 public async Task<IActionResult> OnPostReport(string startDate, string endDate)
        {
            var stDate = startDate.ToMiladi();
            var enDate = endDate.ToMiladi();
            var stream = await _excelReport.ExportReport(stDate, enDate);

            // Download file.
            return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", $"report.xlsx");

        }

این فقط برای excel ه ولی این پکیج با فرمت Pdf هم Export میکنه

این لینک آموزش استفاده ازش رو گذاشته

user

علی شاکری

ممنون استاد

منم دیروز که گشتم به یک پکیج به اسم jsreport رسیدم که خیلی جمع و جور و اوکی بود و توی گیتهاب و ناگت بود ولی خب یکی دو سالی بود آپدیت نشده بود

ولی خب تست کردم جواب داد

 

میخاستم یه راه مطمئن و استیبل باشه

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

و اینکه اگه میشه بحث چاپ گزارش و اکسپورت رو هم به دوره asp پیشرفته اضافه کنید عالی میشه

 

ممنونم

user

محمد اشرافی

من توی یکی ۲ تا پروژه احتیاج به export کردن excel داشتم از این استفاده کردم ، ولی توی پروژه ها بچه ها میرن از استیمول سافت استفاده میکنن

اگر وقت شد و لازم شد حتما اضافه میکنم ❤❤

user

علی شاکری

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

نسخه کرک شده خوب سراغ ندارید؟

user

محمد اشرافی

نه متاسفانه ولی آموزشش رو توی سایت ها دیدم ، خیلی هم آموزش براش گذاشتن

user

علی شاکری

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

متاسفانه لایسنس میخاد که خیلی گرونه

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

user

محمد اشرافی

user

محمد اشرافی

برای ثبت پاسخ باید خود شوید

محبوب ترین مقالات