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

علی شاکری
14 فروردين ۱۴۰۱

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

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

695

14 پاسخ
  • علی شاکری14 فروردين ۱۴۰۱

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

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

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

  • محمد اشرافی15 فروردين ۱۴۰۱

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

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

  • محمد اشرافی15 فروردين ۱۴۰۱

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

  • علی شاکری15 فروردين ۱۴۰۱

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

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

  • مهدی کشکلانی 15 فروردين ۱۴۰۱

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

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

  • علی شاکری15 فروردين ۱۴۰۱

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

  • محمد اشرافی15 فروردين ۱۴۰۱

    من توی یکی از پروژه هام برای 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 میکنه

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

  • علی شاکری15 فروردين ۱۴۰۱

    ممنون استاد

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

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

     

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

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

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

     

    ممنونم

  • محمد اشرافی16 فروردين ۱۴۰۱

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

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

  • علی شاکری16 فروردين ۱۴۰۱

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

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

  • محمد اشرافی17 فروردين ۱۴۰۱

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

  • علی شاکری17 فروردين ۱۴۰۱

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

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

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

  • محمد اشرافی17 فروردين ۱۴۰۱
  • محمد اشرافی17 فروردين ۱۴۰۱