گزارش گیری و چاپ
سلام استاد اشرافی عزیز
برای گزارش گیری چه ابزاری مناسبه برای asp core؟
پاسخ ها
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/Default.jpg)
علی شاکری
استاد stimulsoft رو که نتونستم کرکش کنم و فک می کنم به مشکل بخوره
از صبح دنبالشم ولی چیز بدرد بخوری پیدا نکردم
ممنون میشم راهنمایی کنید
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/50655e66-86e5-4e25-9c29-7f4f3980c193.jpg)
محمد اشرافی
سلام علی جان صبخ بخیر
حقیقتش من آشنایی با ابزار های گزارش گیری ندارم ولی بفرمایید دقیقا برای چه کاری لازمش دارید تا از بچه ها بپرسم اگر اطلاعی داشتن بهتون اطلاع بدم
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/50655e66-86e5-4e25-9c29-7f4f3980c193.jpg)
محمد اشرافی
یعنی می خواید توی چه قالبی گزارش بگیرید
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/Default.jpg)
علی شاکری
مثلا چاپ گواهینامه و یا فاکتور و لیست کارمندان و…
و تبدیل به pdf یا اکسل
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/Default.jpg)
مهدی کشکلانی
یکیش SQL Server Report Service یکی هم Seal Report
دربارشون خودتون تحقیق کنید چون من با ابزار های گزارش گیری زیاد کار نکردم
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/Default.jpg)
علی شاکری
منظورم از گزارش فقط بحث چاپ و اکسپورت به pdf و excel هست
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/50655e66-86e5-4e25-9c29-7f4f3980c193.jpg)
محمد اشرافی
من توی یکی از پروژه هام برای 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](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/Default.jpg)
علی شاکری
ممنون استاد
منم دیروز که گشتم به یک پکیج به اسم jsreport رسیدم که خیلی جمع و جور و اوکی بود و توی گیتهاب و ناگت بود ولی خب یکی دو سالی بود آپدیت نشده بود
ولی خب تست کردم جواب داد
میخاستم یه راه مطمئن و استیبل باشه
شما برای چاپ داخل پروژه هاتون از همین روش استفاده میکنید؟
و اینکه اگه میشه بحث چاپ گزارش و اکسپورت رو هم به دوره asp پیشرفته اضافه کنید عالی میشه
ممنونم
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/50655e66-86e5-4e25-9c29-7f4f3980c193.jpg)
محمد اشرافی
من توی یکی ۲ تا پروژه احتیاج به export کردن excel داشتم از این استفاده کردم ، ولی توی پروژه ها بچه ها میرن از استیمول سافت استفاده میکنن
اگر وقت شد و لازم شد حتما اضافه میکنم ❤❤
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/Default.jpg)
علی شاکری
استاد استیمول سافت رو نتونستم کرکش کنم
نسخه کرک شده خوب سراغ ندارید؟
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/50655e66-86e5-4e25-9c29-7f4f3980c193.jpg)
محمد اشرافی
نه متاسفانه ولی آموزشش رو توی سایت ها دیدم ، خیلی هم آموزش براش گذاشتن
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/Default.jpg)
علی شاکری
بلدم باهاش کار کنم
متاسفانه لایسنس میخاد که خیلی گرونه
گفتم شاید شما نسخه کرکشو داشته باشید
![user](/_ipx/f_webp&q_50&blur_3&s_10x10/codeyad/assets/img/UserAvatars/50655e66-86e5-4e25-9c29-7f4f3980c193.jpg)
محمد اشرافی
اینو چک کنید