public ExcelResult(IExcelInterceptor interceptor, IExcelSender sender, ExcelMessage excel, string viewName, string masterName, Encoding messageEncoding) { ViewName = viewName ?? ViewName; MasterName = masterName ?? MasterName; ExcelEncoding = messageEncoding; Excel = excel; ExcelSender = sender; _interceptor = interceptor; }
private void Deliver(ExcelMessage excel, bool async) { var excelContext = new ExcelSendingContext(excel); _interceptor.BeforeExcelSending(excelContext); if(excelContext.Cancel) { return; } if (async) { ExcelSender.SendAsync(excel, AsyncSendCompleted); return; } _interceptor.AfterExcelSend(excel); }
private void AsyncSendCompleted(ExcelMessage excel) { _interceptor.AfterExcelSend(excel); ExcelSender.Dispose(); }
/// <summary> /// main method to run excel export /// </summary> /// <param name="viewName"></param> /// <param name="model"></param> /// <param name="masterName"></param> /// <returns></returns> public virtual ExcelResult Excel(string viewName, object model = null, string masterName = null) { if (viewName == null) throw new ArgumentNullException("viewName param ist null"); var excel = new ExcelMessage(); excel.ExcelName = ExcelName; excel.HttpContextBase = HttpContextBase; // set default value - if is not set in the controller excel.MimeType = MimeType ?? "application/ms-excel"; // set default encoding - if is not set in the controller excel.ExcelEncoding = ExcelEncoding ?? System.Text.Encoding.UTF8; var result = new ExcelResult(this, ExcelSender, excel, viewName, masterName, ExcelEncoding); ViewData.Model = model; result.ViewData = ViewData; var routeData = new RouteData(); //routeData.DataTokens["area"] = null; routeData.DataTokens["area"] = FindAreaName(); routeData.Values["controller"] = GetType().Name.Replace("Controller",string.Empty); routeData.Values["action"] = viewName; var requestContext = new RequestContext(HttpContextBase, routeData); ControllerContext = new ControllerContext(requestContext, this); result.ExecuteResult(ControllerContext); return result; }
/// <summary> /// Method call after sending Excel /// </summary> /// <param name="excel"></param> protected virtual void AfterExcelSend(ExcelMessage excel) { }
/// <summary> /// Implementation IExcelInterceptor /// </summary> /// <param name="excel"></param> void IExcelInterceptor.AfterExcelSend(ExcelMessage excel) { AfterExcelSend(excel); }